//查询时间段内有效的流行线
_RecordsetPtr CFloatRowLine::QueryValidateLines(_bstr_t bstrBeginDate,_bstr_t bstrEndDate)
{
	if (bstrBeginDate.length()<=0||bstrEndDate.length()<=0)
	{
		MessageBox(NULL,_T("请输入有效时间间隔!"),_T("提示"),0);
		return FALSE;
	}

	if (!theBllApp.m_bConntSuccess)
	{
		MessageBox(NULL,_T("数据库连接失败!"),_T("提示"),0);
		return FALSE;
	}
	if (!theBllApp.m_pDB->CheckTableNameExist("流行线"))
	{
		MessageBox(NULL,_T("数据库中不存在该流行线业务表!"),_T("提示"),0);
		return FALSE;
	}
	_bstr_t bstrSql;
	switch(CDatabaseFactory::m_enumDatabaseType)
	{
	case AccessType:
		bstrSql="select 流行线.编号,名称,所属目标,启用时间,结束时间  from 流行线,流行线属性   where  流行线.编号=流行线属性.所属流行线 and (启用时间<=#"+bstrBeginDate+"# and  结束时间>=#"+bstrBeginDate+"#) or(启用时间>=#"+bstrBeginDate+"# and  结束时间<=#"+bstrEndDate+"#)  or(启用时间<=#"+bstrEndDate+"# and  结束时间>=#"+bstrEndDate+"#)  order by 流行线.编号";
		break;
	case SqlServerType:
		bstrSql="select  流行线.编号,名称,所属目标,启用时间,结束时间  from 流行线,流行线属性  where 流行线.编号=流行线属性.所属流行线 and (启用时间<='"+bstrBeginDate+"' and  结束时间>='"+bstrBeginDate+"') or(启用时间>='"+bstrBeginDate+"' and  结束时间<='"+bstrEndDate+"')  or(启用时间<='"+bstrEndDate+"' and  结束时间>='"+bstrEndDate+"')  order by 流行线.编号";
		break;
	case OracleType:
		bstrSql="select  流行线.编号,名称,所属目标,启用时间,结束时间  from 流行线,流行线属性  where 流行线.编号=流行线属性.所属流行线 and (启用时间<=to_date('" + bstrBeginDate + "','dd/mm/yyyy') and  结束时间>=to_date('" + bstrBeginDate + "','dd/mm/yyyy')) or(启用时间>=to_date('" + bstrBeginDate + "','dd/mm/yyyy') and  结束时间<=to_date('" + bstrEndDate + "','dd/mm/yyyy'))  or(启用时间<=to_date('" + bstrEndDate + "','dd/mm/yyyy') and  结束时间>=to_date('" + bstrEndDate + "','dd/mm/yyyy'))  order by 流行线.编号";
		break;
	default:
		return FALSE;
	}
	return theBllApp.m_pDB->ExcuteSqlRes(bstrSql,adCmdText);
}
Esempio n. 2
0
long _bstr_cmp(const _bstr_t& cmp1, const _bstr_t& cmp2)
{
	long nRes = 0;

	if (cmp1.length() && cmp2.length())
	{
		nRes = wcscmp(cmp1, cmp2);
	}
	else if (cmp1.length() == 0)
	{
		if (cmp2.length() == 0)
		{
			nRes = 0;
		}
		else
		{
			nRes = -1;
		}
	}
	else
	{
		nRes = 1;
	}

	return nRes;
}
//检查重点目标名称更新
BOOL CEmphasesTarget::NameValidate(_bstr_t bstrName,_bstr_t bstrID)
{
	if (bstrName.length()<=0 || bstrID.length()<=0)
	{
		MessageBox(NULL,_T("请选择要加载重点目标!"),_T("提示"),0);
		return FALSE;
	}
	if (!theBllApp.m_bConntSuccess)
	{
		MessageBox(NULL,_T("数据库连接失败!"),_T("提示"),0);
		return FALSE;
	}
	if (!theBllApp.m_pDB->CheckTableNameExist("重点目标"))
	{
		MessageBox(NULL,_T("数据库中不存在该重点目标业务表!"),_T("提示"),0);
		return FALSE;
	}
	_RecordsetPtr pRecordSet;
	_bstr_t strSQL;
	strSQL = "SELECT 编号,名称,类型,所属区域,地址,坐标,描述 FROM 重点目标 WHERE 编号<>"+bstrID+" and  名称 = '" + bstrName+"'";
	pRecordSet = theBllApp.m_pDB->ExcuteSqlRes(strSQL,adCmdText);
	if (pRecordSet!=NULL && !pRecordSet->adoEOF)
		return FALSE;
	pRecordSet->Close();
	pRecordSet.Release();
	return TRUE;
}
Esempio n. 4
0
void CDocument::HandleOpenByFileName(const CStdString& sDocumentFileName, const _bstr_t& openPassword, const _bstr_t& modifyPassword, const _bstr_t& unrestrictPassword)
{
	LOG_WS_FUNCTION_SCOPE();
	if(!PathFileExists(sDocumentFileName.c_str()))
		throw Workshare::System::IO::FileNotFoundException(sDocumentFileName, _T("The document could not be opened because it doesn't exist or has an invalid name."));

	WSFileFormat::IFileTypeCheckerPtr spFileTypeChecker;
	HRESULT hr = spFileTypeChecker.CreateInstance(_T("WSFileFormat.FileTypeChecker"));
	if (FAILED(hr))
	{
		if (REGDB_E_CLASSNOTREG == hr)
		{
			throw Workshare::ClassNotFoundException(_T("WSFileFormat.FileTypeChecker"), _T("Failed to create an instance of CFileTypeChecker when opening document by filename."));
		}
		throw Workshare::Com::ComException(_T("Failed to create an instance of CFileTypeChecker when opening document by filename."), hr);
	}

	IMWApplication* pApplication = 0;
	hr = m_pApplication->QueryInterface(__uuidof(IMWApplication), reinterpret_cast<void**>(&pApplication));
	if(FAILED(hr))
		throw Workshare::Com::ComException(_T("Failed to query an IMWApplication instance from the internal application object"), hr, m_pApplication);
	IMWApplicationPtr spApplication(pApplication, false);

	int fileType = spFileTypeChecker->GetFileType(sDocumentFileName.c_str());
	if(WSFileFormat::wsFileTypeWord == fileType)
	{
		if (FF_MS_WORD_6 >= spFileTypeChecker->GetFileFormat(sDocumentFileName.c_str()))
			throw Workshare::FileFormatVersionNotSupportedException(sDocumentFileName.c_str(), _T("MS Word"), _T("Word 6.0/95"), _T("Encountered a word document version lower than or equal to Word95/6.0"));
	}

	SetCorrectDocumentType(fileType, sDocumentFileName.c_str(), spApplication);
	//then we need to figure out what supported elements based on file type to pass down...

	IMWMetadataElements* pSupportedElements = 0;
	hr = m_pDocumentType->get_SupportedElements(&pSupportedElements);
	if(FAILED(hr))
		throw Workshare::Com::ComException(_T("Failed to obtain the file type's supported elements when opening document by filename."), hr, m_pDocumentType);

	IMWMetadataElementsPtr spSupportedElements(pSupportedElements, false);
	MetadataElementsConverter converter;
	//we know the IMWMetadataElements are the same creature, but the converter uses the Metawall namespace and this project does #import "WPAPI.tlb" no_namespace 
	Workshare::Protect::MetadataElements supportedElements = converter.ConvertComElements(reinterpret_cast<Metawall::IMWMetadataElements*>(spSupportedElements.GetInterfacePtr()));

	SetupImplementorsWithSupportedElements(fileType, supportedElements, sDocumentFileName.c_str());

	if(m_spImplementor.get() == 0)
		throw Workshare::OutOfMemoryException(_T("Failed to initialize the implementor"));

	m_spImplementor->SetFileFormat(spFileTypeChecker->GetFileType(sDocumentFileName.c_str()));

	if(openPassword.length() > 0 || modifyPassword.length() > 0 || unrestrictPassword.length() > 0)
		m_spImplementor->Open(sDocumentFileName, static_cast<const wchar_t*>(openPassword), static_cast<const wchar_t*>(modifyPassword), static_cast<const wchar_t*>(unrestrictPassword));
	else
		m_spImplementor->Open(sDocumentFileName);
}
HRESULT CTCPropBagOnRegKey::_LoadObject(const _bstr_t& strName,
  IUnknown* punkObj, IErrorLog* pErrorLog)
{
  // Validate the specified parameters
  if (IsBadReadPtr(punkObj))
    return E_POINTER;
  if (NULL != pErrorLog && IsBadReadPtr(pErrorLog))
    return E_POINTER;

  // Open the subkey with the specified name
  CRegKey subkey;
  if (!strName.length())
    subkey = m_key;
  else if (!m_key.Exists(strName) || !subkey.Open(m_key, strName))
    return HRESULT_FROM_WIN32(GetLastError());

  // QueryInterface for IPersistPropertyBag
  IPersistPropertyBagPtr pppb;
  HRESULT hr = punkObj->QueryInterface(__uuidof(pppb), (void**)&pppb);
  if (FAILED(hr))
    return hr;

  // Load the object's persistent properties
  CComObjectStack<CTCPropBagOnRegKey> bag;
  bag.Init(subkey, strName, this);
  hr = pppb->Load(&bag, pErrorLog);

  // Return the last HRESULT
  return hr;
}
Esempio n. 6
0
bool CXmlDocument::LoadXml(const _bstr_t &xmlString)
{
	if ( m_pDoc ==NULL )
		Initialize();

	ATLASSERT(m_pDoc!=NULL);

	if(xmlString.length() == 0) return false;

	if(m_pDoc->_loadXML(xmlString))
	{
		m_szUrl.Empty();
		m_pNode = GetRoot();
		//set default selection namespaces
		CString cstr = GetNameSpaces();
		if(!cstr.IsEmpty())
		{
			m_pDoc->_setProperty(_T("SelectionNamespaces"), (LPCTSTR)cstr);
		}
		return true;
	}
	else
	{
		m_szUrl.Empty();
		m_pNode = NULL;
		return false;
	}
}
//加载流行线节点列表
std::vector<string> CFloatRowLine::LoadNodesVetor( _bstr_t bstrID)
{
	vector<string> coodinates;
	if (bstrID.length()<=0)
	{
		MessageBox(NULL,_T("请选择要加载的流行线!"),_T("提示"),0);
		return coodinates;
	}
	if (!theBllApp.m_bConntSuccess)
	{
		MessageBox(NULL,_T("数据库连接失败!"),_T("提示"),0);
		return coodinates;
	}
	if (!theBllApp.m_pDB->CheckTableNameExist("流行线"))
	{
		MessageBox(NULL,_T("数据库中不存在该流行线业务表!"),_T("提示"),0);
		return coodinates;
	}
	
	_RecordsetPtr prst=LoadNodesRCS(bstrID);
	if (prst!=NULL)
	{
		_variant_t var;
		while(!prst->adoEOF)
		{
			var=prst->GetCollect("坐标");
			coodinates.push_back(((char *)((_bstr_t)(var.vt==1?"":var))));
			prst->MoveNext();
		}
		prst->Close();
		prst.Release();
	}
	return coodinates;
}
HRESULT CTCPropBagOnRegKey::_SaveObject(const _bstr_t& strName,
  IUnknown* punkObj, BOOL bClearDirty, BOOL bSaveAllProperties)
{
  // Validate the specified parameters
  if (IsBadReadPtr(punkObj))
    return E_POINTER;

  // Create a subkey with the specified name
  CRegKey subkey;
  if (!strName.length())
    subkey = m_key;
  else
  {
    m_key.DeleteValue(strName);
    m_key.RecurseDeleteKey(strName);
    if (!subkey.Open(m_key, strName))
      return HRESULT_FROM_WIN32(GetLastError());
  }

  // QueryInterface for IPersistPropertyBag
  IPersistPropertyBagPtr pppb;
  HRESULT hr = punkObj->QueryInterface(__uuidof(pppb), (void**)&pppb);
  if (FAILED(hr))
    return hr;

  // Get the object's CLSID
  CLSID clsid;
  hr = pppb->GetClassID(&clsid);
  if (FAILED(hr))
    return hr;

  // Attempt first to convert the object's CLSID to a ProgID
  LPOLESTR pszProgID = NULL;
  if (SUCCEEDED(ProgIDFromCLSID(clsid, &pszProgID)))
  {
    subkey.WriteString(m_szProgID, pszProgID);
    CoTaskMemFree(pszProgID);
  }
  else
  {
    // Convert the object's CLSID to a string
    OLECHAR szClassID[64];
    StringFromGUID2(clsid, szClassID, sizeofArray(szClassID));
    subkey.WriteString(m_szCLSID, szClassID);
  }

  // Write the variant type value
  subkey.WriteDWord(m_szVariantType, DWORD(VarTypeFromUnknown(punkObj)));

  // Save the persistent properties of the object
  CComObjectStack<CTCPropBagOnRegKey> bag;
  bag.Init(subkey, strName, this);
  hr = pppb->Save(&bag, bClearDirty, bSaveAllProperties);

  // Return the last HRESULT
  return hr;
}
HRESULT CTCPropBagOnRegKey::_GetObjectCLSID(const _bstr_t& strName,
  CLSID& clsid, CRegKey& subkey, _bstr_t& strObjectID, IErrorLog* pErrorLog)
{
  USES_CONVERSION;

  // Clear the specified clsid, subkey, and strObjectID parameters
  clsid = CLSID_NULL;
  subkey.Close();
  strObjectID.Empty();

  // Open the subkey with the specified name
  if (!strName.length())
    subkey = m_key;
  else if (!m_key.Exists(strName) || !subkey.Open(m_key, strName))
    return HRESULT_FROM_WIN32(GetLastError());

  // Use local resources for string loading
  MCLibRes res;

  // Read the object's CLSID string value
  HRESULT hr;
  _bstr_t strDesc;
  if (subkey.GetString(m_szCLSID, strObjectID))
  {
    // Convert the object's CLSID string to a CLSID
    LPOLESTR pszObjectID = const_cast<LPOLESTR>(T2COLE(strObjectID));
    hr = CLSIDFromString(pszObjectID, &clsid);
    if (SUCCEEDED(hr))
      return hr;

    // Format an error description string   
    strDesc.Format(IDS_FMT_FAIL_CONVERT_CLSID, strObjectID);
  }
  else if (subkey.GetString(m_szProgID, strObjectID))
  {
    // Convert the object's ProgID string to a CLSID
    hr = CLSIDFromProgID(T2COLE(strObjectID), &clsid);
    if (SUCCEEDED(hr))
      return hr;

    // Format an error description string
    strDesc.Format(IDS_FMT_FAIL_CONVERT_CLSID, strObjectID);
  }
  else
  {
    // Save the last error
    hr = HRESULT_FROM_WIN32(GetLastError());

    // Format an error description string
    strDesc.LoadString(IDS_FAIL_READ_CLSID);
  }

  // Log the error and return
  return LogError("GetObjectCLSID", strDesc, hr, T2COLE(strName), pErrorLog);
}
HRESULT CTCPropBagOnRegKey::_CreateRemoteObject(const _bstr_t& strServer,
  const _bstr_t& strName, IUnknown** ppunkObj, IErrorLog* pErrorLog)
{
  // If DCOM is not installed, take appropriate action
  MCOle32_dll& libOle32 = GetOle32Lib();
  if (!libOle32.Exists_CoCreateInstanceEx())
    return !strServer.length() ?
      CreateLocalObject(strName, ppunkObj, pErrorLog) : E_UNEXPECTED;

  // Read the CLSID of the object saved on the specified subkey
  CLSID clsid;
  CRegKey subkey;
  _bstr_t strObjectID;
  HRESULT hr = GetObjectCLSID(strName, clsid, subkey, strObjectID,
    pErrorLog);
  if (FAILED(hr))
    return hr;

  // Create the object
  USES_CONVERSION;
  _bstr_t bstrServer(strServer);
  COSERVERINFO csi = {0, bstrServer, NULL, 0};
  MULTI_QI mqi = {&IID_IPersistPropertyBag, NULL, 0};
  DWORD dwCtx = CLSCTX_ALL | CLSCTX_REMOTE_SERVER;
  hr = libOle32.CoCreateInstanceEx(clsid, NULL, dwCtx, &csi, 1, &mqi);
  if (FAILED(hr))
  {
    // Use local resources
    MCLibRes res;

    // Format a description string
    _bstr_t strDesc;
    strDesc.Format(IDS_FMT_FAIL_CREATE_CLSID, strObjectID);

    // Log the error
    USES_CONVERSION;
    return LogError("CreateObject", strDesc, hr, T2COLE(strName), pErrorLog);
  }

  // Attach the interface pointer to the smart pointer
  IPersistPropertyBagPtr pppb((IPersistPropertyBag*)mqi.pItf, false);
  
  // Load the object's persistent properties
  CComObjectStack<CTCPropBagOnRegKey> bag;
  bag.Init(subkey, strName, this);
  hr = pppb->Load(&bag, pErrorLog);
  if (FAILED(hr))
    return hr;

  // Detach the IUnknown* and copy to the [out] parameter, don't Release it
  *ppunkObj = pppb.Detach();

  // Indicate success
  return S_OK;
}
void CFloatRowLine::Loadproperties(_bstr_t bstrID, std::vector<string> &vecField, std::vector<string> &vecRecordSet, long &lFieldCounts)
{
	if (bstrID.length()<=0)
	{
		MessageBox(NULL,_T("请选择要加载属性的流行线!"),_T("提示"),0);
		return;
	}
	_RecordsetPtr res = Loadproperties(bstrID);
	if(res==NULL)
		return;

	CBllHelp::Instance().QueryByCondit(res,vecField,vecRecordSet,lFieldCounts);
}
Esempio n. 12
0
Xml::Status::code Xml::Document::load (_bstr_t xmlDocumentFilename)
{
    // see if there's an existing...
    if (this->x_xmlDocument)
    {
        // delete the existing...
        delete static_cast<ShellDocument *>(this->x_xmlDocument);
        this->x_xmlDocument = 0;
    }
    if (xmlDocumentFilename.length () > 0)
    {
        // create a new dom shell...
        if (this->x_xmlDocument = new ShellDocument ())
        {
            // load the document...
            if (static_cast<ShellDocument *>(this->x_xmlDocument)->domDocument)
            {
                IXMLDOMNode *newDomNode;
                // load the file or stream...
                try
                {
                    if (((wchar_t *)xmlDocumentFilename)[0] == '<')
                    {
                        newDomNode = static_cast<ShellDocument *>(this->x_xmlDocument)->loadXML (xmlDocumentFilename);
                    }
                    else
                    {
                        newDomNode = static_cast<ShellDocument *>(this->x_xmlDocument)->loadFile (xmlDocumentFilename);
                    }
                }
                catch (...)
                {
                    // failed...
                }
                // validate the node...
                if (newDomNode)
                {
                    // copy to the root node...
                    if (DOMInterfaceCollections::copyNode (&this->rootNode,newDomNode))
                    {
                        // return success...
                        return static_cast<ShellDocument *>(this->x_xmlDocument)->status = Xml::Status::ready;
                    }
                }
                // failing load...
                return static_cast<ShellDocument *>(this->x_xmlDocument)->status = Xml::Status::invalidDocument;
            }
        }
    }
    return static_cast<ShellDocument *>(this->x_xmlDocument)->status = Xml::Status::failed;
}
//加载流行线信息
BOOL CFloatRowLine::LoadInfo( _bstr_t bstrID)
{
	if (bstrID.length()<=0)
	{
		MessageBox(NULL,_T("请选择要加载的流行线!"),_T("提示"),0);
		return FALSE;
	}
	if (!theBllApp.m_bConntSuccess)
	{
		MessageBox(NULL,_T("数据库连接失败!"),_T("提示"),0);
		return FALSE;
	}
	if (!theBllApp.m_pDB->CheckTableNameExist("流行线"))
	{
		MessageBox(NULL,_T("数据库中不存在该流行线业务表!"),_T("提示"),0);
		return FALSE;
	}
	_RecordsetPtr  prstInfo = theBllApp.m_pDB->ExcuteSqlRes("select 编号,名称,所属目标,颜色,实线,箭头,宽度,创建人,创建时间,描述  from  流行线  where 编号="+bstrID,adCmdText);
	BOOL bFlag=FALSE;

	if (prstInfo!=NULL)
	{
		if (!prstInfo->adoEOF)
		{
			m_strID = bstrID  ;
			_variant_t var;
			var=(prstInfo->GetCollect("名称")) ;
			m_strName = (_bstr_t)(var.vt==1?"":var);
			var=(prstInfo->GetCollect("所属目标")) ;
			m_strToTarger=(_bstr_t)(var.vt==1?"":var);
			var=(prstInfo->GetCollect("颜色")) ;
			m_strColor=(_bstr_t)(var.vt==1?"":var);
			var=(prstInfo->GetCollect("实线")) ;
			m_strLineType=(_bstr_t)(var.vt==1?"":var);
			var=(prstInfo->GetCollect("箭头")) ;
			m_strDerection=(_bstr_t)(var.vt==1?"":var);
			var=(prstInfo->GetCollect("宽度")) ;
			m_strWidth=(_bstr_t)(var.vt==1?"":var);
			var=(prstInfo->GetCollect("创建人")) ;
			m_strCreator = (_bstr_t)(var.vt==1?"":var);
			var=(prstInfo->GetCollect("创建时间")) ;
			m_strCreateTime = (_bstr_t)(var.vt==1?"":var);
			var=(prstInfo->GetCollect("描述")) ;
			m_strRemark = (_bstr_t)(var.vt==1?"":var);
			bFlag=TRUE;
		}
		prstInfo->Close();
		prstInfo.Release();
	} 
	return bFlag;
}
_bstr_t CTCPropBagOnRegKey::_GetServer(const _bstr_t& strName)
{
  // Open the subkey with the specified name
  CRegKey subkey;
  if (!strName.length())
    subkey = m_key;
  else if (!m_key.Exists(strName) || !subkey.Open(m_key, strName))
    return _bstr_t();

  // Read the Server of the object saved on the specified subkey
  _bstr_t strServer;
  if (!subkey._GetString(m_szServer, strServer))
    strServer.Empty();
  return strServer;
}
BOOL CEmphasesTarget::LoadByName(_bstr_t bstrName)
{
	if (bstrName.length()<=0)
	{
		MessageBox(NULL,_T("请选择要加载重点目标名称!"),_T("提示"),0);
		return FALSE;
	}
	if (!theBllApp.m_bConntSuccess)
	{
		MessageBox(NULL,_T("数据库连接失败!"),_T("提示"),0);
		return FALSE;
	}
	if (!theBllApp.m_pDB->CheckTableNameExist("重点目标"))
	{
		MessageBox(NULL,_T("数据库中不存在该重点目标业务表!"),_T("提示"),0);
		return FALSE;
	}
	BOOL bFlag=FALSE;
	_RecordsetPtr pRecordSet;
	_bstr_t strSQL;
	strSQL = "SELECT 编号,名称,类型,所属区域,地址,坐标,描述 FROM 重点目标 WHERE 名称 = '" + bstrName+"'";
	pRecordSet = theBllApp.m_pDB->ExcuteSqlRes(strSQL,adCmdText);
	if (pRecordSet!=NULL)
	{
		if (!pRecordSet->adoEOF)
		{
			_variant_t var;
			var=pRecordSet->GetCollect("编号");
			m_strID = (_bstr_t)(var.vt==1?"":var);
			var=pRecordSet->GetCollect("名称");
			m_strName = (_bstr_t)(var.vt==1?"":var);
			var=pRecordSet->GetCollect("类型");
			m_strType = (_bstr_t)(var.vt==1?"":var);
			var=pRecordSet->GetCollect("所属区域");
			m_strArea = (_bstr_t)(var.vt==1?"":var);
			var=pRecordSet->GetCollect("地址");
			m_strAddress = (_bstr_t)(var.vt==1?"":var);
			var=pRecordSet->GetCollect("坐标");
			m_strCoordinate = (_bstr_t)(var.vt==1?"":var);
			var=pRecordSet->GetCollect("描述");
			m_strRemark = (_bstr_t)(var.vt==1?"":var);
			bFlag=TRUE;
		}
		pRecordSet->Close();
		pRecordSet.Release();
	}
	return bFlag;
}
HRESULT CTCPropBagOnRegKey::_SetServer(const _bstr_t& strName,
  const _bstr_t& strServer)
{
  // Open the subkey with the specified name
  CRegKey subkey;
  if (!strName.length())
    subkey = m_key;
  else if (!m_key.Exists(strName) || !subkey.Open(m_key, strName))
    return HRESULT_FROM_WIN32(GetLastError());

  // Write the Server of the object saved on the specified subkey
  subkey.WriteString(m_szServer, strServer);

  // Indicate success
  return S_OK;
}
//检测流行线属性录入的冲突
//参数:bstrID,修改则bstrID为流行线属性编号,添加则为“”
//		bstrLineid为流行线编号
BOOL CFRowLineProperty::CheckLnPrptyColn(_bstr_t bstrID, _bstr_t bstrLineid,_bstr_t bstrBeginDate,_bstr_t bstrEndDate)
{
	_bstr_t bstrSql="";
	if (bstrID.length()==0)
	{
		switch(CDatabaseFactory::m_enumDatabaseType)
		{
		case AccessType:
			bstrSql="select *  from  流行线属性   where  所属流行线=" + bstrLineid + "  and  (启用时间<=#"+bstrBeginDate+"# and  结束时间>=#"+bstrBeginDate+"#) or (启用时间>=#"+bstrBeginDate+"#  and  结束时间<=#"+bstrEndDate+"#)  or (启用时间<=#"+bstrEndDate+"#  and  结束时间>=#"+bstrEndDate+"#)";
			break;
		case SqlServerType:
			bstrSql="select  *  from  流行线属性  where  所属流行线=" + bstrLineid + "  and  (启用时间<='"+bstrBeginDate+"' and  结束时间>='"+bstrBeginDate+"') or (启用时间>='"+bstrBeginDate+"' and  结束时间<='"+bstrEndDate+"')  or (启用时间<='"+bstrEndDate+"' and  结束时间>='"+bstrEndDate+"')";
			break;
		case OracleType:
			bstrSql="select  *  from  流行线属性  where  所属流行线=" + bstrLineid + "  and  (启用时间<=to_date('" + bstrBeginDate + "','dd/mm/yyyy')  and  结束时间>=to_date('" + bstrBeginDate + "','dd/mm/yyyy')) or (启用时间>=to_date('" + bstrBeginDate + "','dd/mm/yyyy') and  结束时间<=to_date('" + bstrEndDate + "','dd/mm/yyyy'))  or (启用时间<=to_date('" + bstrEndDate + "','dd/mm/yyyy') and  结束时间>=to_date('" + bstrEndDate + "','dd/mm/yyyy'))";
			break;
		default:
			return FALSE;
		}
	}
	else
	{
		switch(CDatabaseFactory::m_enumDatabaseType)
		{
		case AccessType:
			bstrSql="select *  from  流行线属性   where  所属流行线=" + bstrLineid + "  and  编号<>"+bstrID+"   and  ((启用时间<=#"+bstrBeginDate+"# and  结束时间>=#"+bstrBeginDate+"#) or(启用时间>=#"+bstrBeginDate+"# and  结束时间<=#"+bstrEndDate+"#)  or(启用时间<=#"+bstrEndDate+"# and  结束时间>=#"+bstrEndDate+"#))";
			break;
		case SqlServerType:
			bstrSql="select  *  from  流行线属性  where  所属流行线=" + bstrLineid + "  and  编号<>"+bstrID+"   and  ((启用时间<='"+bstrBeginDate+"' and  结束时间>='"+bstrBeginDate+"') or(启用时间>='"+bstrBeginDate+"' and  结束时间<='"+bstrEndDate+"')  or(启用时间<='"+bstrEndDate+"' and  结束时间>='"+bstrEndDate+"'))";
			break;
		case OracleType:
			bstrSql="select  *  from  流行线属性  where  所属流行线=" + bstrLineid + "  and  编号<>"+bstrID+"   and  ((启用时间<=to_date('" + bstrBeginDate + "','dd/mm/yyyy')  and  结束时间>=to_date('" + bstrBeginDate + "','dd/mm/yyyy')) or (启用时间>=to_date('" + bstrBeginDate + "','dd/mm/yyyy') and  结束时间<=to_date('" + bstrEndDate + "','dd/mm/yyyy'))  or (启用时间<=to_date('" + bstrEndDate + "','dd/mm/yyyy') and  结束时间>=to_date('" + bstrEndDate + "','dd/mm/yyyy')))";
			break;
		default:
			return FALSE;
		}
	}
	_RecordsetPtr rst=theBllApp.m_pDB->ExcuteSqlRes(bstrSql,adCmdText);
	if (rst!=NULL&& !rst->adoEOF)
	{
		return TRUE;
	}
	else 
		return FALSE;
	
}
Esempio n. 18
0
TclObject::TclObject (const _bstr_t &src)
{
    if (src.length() > 0) {
#if TCL_MINOR_VERSION >= 2
        // Uses Unicode functions introduced in Tcl 8.2.
        m_pObj = Tcl_NewUnicodeObj(
                reinterpret_cast<const Tcl_UniChar *>(static_cast<wchar_t *>(src)),
                -1);
#else
        m_pObj = Tcl_NewStringObj(src, -1);
#endif
    } else {
        m_pObj = Tcl_NewObj();
    }

    Tcl_IncrRefCount(m_pObj);
}
Esempio n. 19
0
Xml::Status::code Xml::Document::save (_bstr_t xmlDocumentFilename)
{
    if (xmlDocumentFilename.length () && this->x_xmlDocument) try
    {
        _variant_t saveName (xmlDocumentFilename);
        // call save...
        if (SUCCEEDED (static_cast<ShellDocument *>(this->x_xmlDocument)->domDocument->save (saveName)))
        {
            // return success...
            return static_cast<ShellDocument *>(this->x_xmlDocument)->status = Xml::Status::ok;
        }
        // save failed...
        return static_cast<ShellDocument *>(this->x_xmlDocument)->status = Xml::Status::failed;
    }
    catch (...) {}

    return Xml::Status::noDocument;
}
//加载流行线节点数据集
_RecordsetPtr CFloatRowLine::LoadNodesRCS( _bstr_t bstrID)
{
	if (bstrID.length()<=0)
	{
		MessageBox(NULL,_T("请选择要加载的流行线!"),_T("提示"),0);
		return FALSE;
	}
	if (!theBllApp.m_bConntSuccess)
	{
		MessageBox(NULL,_T("数据库连接失败!"),_T("提示"),0);
		return FALSE;
	}
	if (!theBllApp.m_pDB->CheckTableNameExist("流行线"))
	{
		MessageBox(NULL,_T("数据库中不存在该流行线业务表!"),_T("提示"),0);
		return FALSE;
	}
	return theBllApp.m_pDB->ExcuteSqlRes("select 编号,坐标  from  线节点  where 线类型='流行线' and  所属线编号="+bstrID+"  order by 编号",adCmdText);
}
//删除流行线属性记录,通过传递编号(用“,"隔开)
BOOL CFRowLineProperty::Delete(_bstr_t bstrIDS)
{
	if (bstrIDS.length()<=0)
	{
		MessageBox(NULL,_T("请选择要删除流行线属性!"),_T("提示"),0);
		return FALSE;
	}
	if (!theBllApp.m_bConntSuccess)
	{
		MessageBox(NULL,_T("数据库连接失败!"),_T("提示"),0);
		return FALSE;
	}
	if (!theBllApp.m_pDB->CheckTableNameExist("流行线属性"))
	{
		MessageBox(NULL,_T("数据库中不存在该流行线属性业务表!"),_T("提示"),0);
		return FALSE;
	}
	return theBllApp.m_pDB->ExcuteSql("DELETE FROM 流行线属性 WHERE 编号 IN ( " + bstrIDS + " )",adCmdText);
}
//加载流行线属性列表
_RecordsetPtr CFloatRowLine::Loadproperties( _bstr_t bstrID )
{
	if (bstrID.length()<=0)
	{
		MessageBox(NULL,_T("请选择要加载属性的流行线!"),_T("提示"),0);
		return FALSE;
	}
	if (!theBllApp.m_bConntSuccess)
	{
		MessageBox(NULL,_T("数据库连接失败!"),_T("提示"),0);
		return FALSE;
	}
	if (!theBllApp.m_pDB->CheckTableNameExist("流行线"))
	{
		MessageBox(NULL,_T("数据库中不存在该流行线业务表!"),_T("提示"),0);
		return FALSE;
	}
	return theBllApp.m_pDB->ExcuteSqlRes("select 编号,启用时间,结束时间,备注  from  流行线属性  where 所属流行线 = "+bstrID,adCmdText);
}
//清除流行线节点
BOOL CFloatRowLine::ClearLineNodes( _bstr_t bstrIDs )
{
	if (bstrIDs.length()==0)
	{
		MessageBox(NULL,_T("请选择清除节点的流行线!"),_T("提示"),0);
		return FALSE;
	}
	if (!theBllApp.m_bConntSuccess)
	{
		MessageBox(NULL,_T("数据库连接失败!"),_T("提示"),0);
		return FALSE;
	}
	if (!theBllApp.m_pDB->CheckTableNameExist("流行线"))
	{
		MessageBox(NULL,_T("数据库中不存在该流行线业务表!"),_T("提示"),0);
		return FALSE;
	}
	return theBllApp.m_pDB->ExcuteSql("DELETE FROM 线节点 WHERE 线类型='流行线' and  所属线编号 IN ( " + bstrIDs + " )",adCmdText);
}
BOOL CControlUser::Load(_bstr_t bstrID)
{
	if (bstrID.length()<=0)
	{
		MessageBox(NULL,_T("请选择要加载监控用户编号!"),_T("提示"),0);
		return FALSE;
	}
	if (!theBllApp.m_bConntSuccess)
	{
		MessageBox(NULL,_T("数据库连接失败!"),_T("提示"),0);
		return FALSE;
	}
	if (!theBllApp.m_pDB->CheckTableNameExist("监控用户"))
	{
		MessageBox(NULL,_T("数据库中不存在该监控用户业务表!"),_T("提示"),0);
		return FALSE;
	}
	BOOL bFlag=FALSE;
	_RecordsetPtr pRecordSet;
	_bstr_t strSQL;
	strSQL = "SELECT 编号,服务器,用户名,密码 FROM 监控用户 WHERE 编号 = " + bstrID;
	pRecordSet = theBllApp.m_pDB->ExcuteSqlRes(strSQL,adCmdText);

	if(pRecordSet!=NULL)//如果记录集中有记录
	{
		if (!pRecordSet->adoEOF)
		{
			bFlag = TRUE;
			_variant_t var;
			m_strID = bstrID;
			var=pRecordSet->GetCollect("服务器");
			m_strServer = (_bstr_t)(var.vt==1?"":var);
			var=pRecordSet->GetCollect("用户名");
			m_strUserName = (_bstr_t)(var.vt==1?"":var);
			var=pRecordSet->GetCollect("密码");
			m_strPassWord = (_bstr_t)(var.vt==1?"":var);
		}
		pRecordSet->Close();
		pRecordSet.Release();
	}
	return bFlag;
}
//加载属性:参数:属性表中的编号
BOOL CFRowLineProperty::LoadInfo( _bstr_t bstrID )
{
	if (bstrID.length()<=0)
	{
		MessageBox(NULL,_T("请选择加载流行线属性!"),_T("提示"),0);
		return FALSE;
	}
	if (!theBllApp.m_bConntSuccess)
	{
		MessageBox(NULL,_T("数据库连接失败!"),_T("提示"),0);
		return FALSE;
	}
	if (!theBllApp.m_pDB->CheckTableNameExist("流行线属性"))
	{
		MessageBox(NULL,_T("数据库中不存在该流行线属性业务表!"),_T("提示"),0);
		return FALSE;
	}
	_RecordsetPtr  prstInfo = theBllApp.m_pDB->ExcuteSqlRes("select 编号,所属流行线,启用时间,结束时间,备注  from  流行线属性  where 编号="+bstrID,adCmdText);
	BOOL Bflag=FALSE;

	if (prstInfo!=NULL)
	{
		if(!prstInfo->adoEOF)
		{
			m_strID = bstrID ;
			_variant_t var;
			var=prstInfo->GetCollect("所属流行线") ;
			m_strLineID=(_bstr_t)(var.vt==1?"":var);
			var=(prstInfo->GetCollect("启用时间")) ;
			m_strBeginDate=(_bstr_t)(var.vt==1?"":var);
			var=(prstInfo->GetCollect("结束时间")) ;
			m_strEndDate=(_bstr_t)(var.vt==1?"":var);
			var=(prstInfo->GetCollect("备注")) ;
			m_strRemark = (_bstr_t)(var.vt==1?"":var);
			Bflag=TRUE;
		}
		prstInfo->Close();
		prstInfo.Release();
	} 
	return Bflag;
}
BOOL CControlUser::Delete(_bstr_t strIDS)
{
	if (strIDS.length()<=0)
	{
		MessageBox(NULL,_T("请选择要删除监控用户编号!"),_T("提示"),0);
		return FALSE;
	}
	if (!theBllApp.m_bConntSuccess)
	{
		MessageBox(NULL,_T("数据库连接失败!"),_T("提示"),0);
		return FALSE;
	}
	if (!theBllApp.m_pDB->CheckTableNameExist("监控用户"))
	{
		MessageBox(NULL,_T("数据库中不存在该监控用户业务表!"),_T("提示"),0);
		return FALSE;
	}
	_bstr_t strSQL;
	strSQL = "DELETE FROM 监控用户 WHERE 编号 IN (" + strIDS + ")";
	return theBllApp.m_pDB->ExcuteSql(strSQL,adCmdText);
}
BOOL CEmphasesTarget::Delete(_bstr_t strIDS)
{
	if (strIDS.length()<=0)
	{
		MessageBox(NULL,_T("请选择要删除重点目标!"),_T("提示"),0);
		return FALSE;
	}
	if (!theBllApp.m_bConntSuccess)
	{
		MessageBox(NULL,_T("数据库连接失败!"),_T("提示"),0);
		return FALSE;
	}
	if (!theBllApp.m_pDB->CheckTableNameExist("重点目标"))
	{
		MessageBox(NULL,_T("数据库中不存在该重点目标业务表!"),_T("提示"),0);
		return FALSE;
	}
	_bstr_t strSQL;
	strSQL = "DELETE FROM 重点目标 WHERE 编号 IN (" + strIDS + ")";
	return theBllApp.m_pDB->ExcuteSql(strSQL,adCmdText);
}
//删除流行线记录,
//通过传递编号(用“,"隔开)
BOOL CFloatRowLine::Delete(_bstr_t bstrIDS)
{
	if (bstrIDS.length()<=0)
	{
		MessageBox(NULL,_T("请选择要删除的流行线!"),_T("提示"),0);
		return FALSE;
	}
	if (!theBllApp.m_bConntSuccess)
	{
		MessageBox(NULL,_T("数据库连接失败!"),_T("提示"),0);
		return FALSE;
	}
	if (!theBllApp.m_pDB->CheckTableNameExist("流行线"))
	{
		MessageBox(NULL,_T("数据库中不存在该流行线业务表!"),_T("提示"),0);
		return FALSE;
	}
	std::vector<_bstr_t> vbstrSql;
	vbstrSql.push_back( "DELETE FROM 线节点 WHERE 线类型='流行线' and  所属线编号 IN ( " + bstrIDS + " )");
	vbstrSql.push_back( "DELETE FROM 流行线 WHERE 编号 IN ( " + bstrIDS + " )");
	return theBllApp.m_pDB->ExcuteTrans( vbstrSql  ,adCmdText );
}
//创建查询
_RecordsetPtr CFloatRowLine::QueryCreateLines(_bstr_t strBeginTime,_bstr_t strEndTime,_bstr_t strCreatorName)
{
	_bstr_t strSqlwhere="";
	switch(CDatabaseFactory::m_enumDatabaseType)
	{
	case OracleType:
		if (strCreatorName.length()>0)
		{
			strSqlwhere+="and 创建人='"+strCreatorName+"'";
		}
		if (strBeginTime.length()>0&&strEndTime.length()>0)
			strSqlwhere+="  and 创建时间 = to_date('" + strBeginTime + "','dd/mm/yyyy') and  to_date('" + strEndTime + "','dd/mm/yyyy')";
		else if(strBeginTime.length()>0)
			strSqlwhere+="    and 创建时间 = to_date('" + strBeginTime + "','dd/mm/yyyy')";
		else if(strEndTime.length()>0)
			strSqlwhere+="    and 创建时间 = to_date('" + strEndTime + "','dd/mm/yyyy')";
		break;
	case SqlServerType:
		if (strCreatorName.length()>0)
		{
			strSqlwhere+="and 创建人='"+strCreatorName+"'";
		}
		if (strBeginTime.length()>0&&strEndTime.length()>0)
			strSqlwhere+="  and 创建时间 between '"+strBeginTime+"' and '"+strEndTime+"'";
		else if(strBeginTime.length()>0)
			strSqlwhere+="   and 创建时间='"+strBeginTime+"'";
		else if(strEndTime.length()>0)
			strSqlwhere+="   and 创建时间='"+strEndTime+"'";
		break;
	case AccessType:
		if (strCreatorName.length()>0)
		{
			strSqlwhere+="and 创建人='"+strCreatorName+"'";
		}
		if (strBeginTime.length()>0&&strEndTime.length()>0)
			strSqlwhere+="  and 创建时间 between #"+strBeginTime+"# and #"+strEndTime+"#";
		else if(strBeginTime.length()>0)
			strSqlwhere+="   and 创建时间=#"+strBeginTime+"#";
		else if(strEndTime.length()>0)
			strSqlwhere+="   and 创建时间=#"+strEndTime+"#";
		break;
	default:
		return NULL;
	}
	return QueryLinesByCondit(strSqlwhere);
}
BOOL CConcretion::Add(_bstr_t strGuid,_bstr_t strTypeName,vector<_bstr_t>&vfileds,vector<_bstr_t> &vValues)
{
	if ( strGuid.length()<1 ||strTypeName.length()<1 || vfileds.size()<1||vValues.size()<1)
		return FALSE;
	_bstr_t strSql,strID, strSql1,strSql2;
	_RecordsetPtr pRecordSet;
	vector<_bstr_t> vecStrSql;
	adoDataTypeEnum adoFldType;
	_variant_t var;
	string strTemp="";

	//从类别名称获取类别编号
	strSql = "SELECT * FROM 类别信息 WHERE 类别名称 = '" + strTypeName + "'";
	pRecordSet = theBllApp.m_pDB->ExcuteSqlRes(strSql, adCmdText);
	if(pRecordSet == NULL||pRecordSet->adoEOF)
		return FALSE;
	strID = pRecordSet->GetCollect("编号");
	//插入基本信息表语句
	if (CDatabaseFactory::m_enumDatabaseType==OracleType)
		strSql1 = "INSERT INTO 基本信息(GUID,类别) VALUES ('"+ strGuid + "'," + strID + ")";
	else
		strSql1 = "INSERT INTO 基本信息([GUID],[类别]) VALUES ('"+ strGuid + "'," + strID + ")";
	//具体类别表存不存记录
	if (CDatabaseFactory::m_enumDatabaseType==OracleType)
		strSql = "SELECT * FROM " + strTypeName + " WHERE GUID = '" + strGuid + "'";
	else
		strSql = "SELECT * FROM " + strTypeName + " WHERE [GUID] = '" + strGuid + "'";
	pRecordSet = theBllApp.m_pDB->ExcuteSqlRes(strSql, adCmdText);
	if(pRecordSet == NULL)
		return FALSE;
	else
	{
		bool isAdd=false;
		if (pRecordSet->adoEOF)
			isAdd=true;
		if(isAdd)
		{//具体类别表不存在记录
			_bstr_t strColumns,strValues;
			bool isFirst=true;
			vector<_bstr_t>::iterator itr = vfileds.begin();
			vector<_bstr_t>::iterator itr2=vValues.begin();
			while(itr!=vfileds.end()&&itr2!=vValues.end())
			{
				if (isFirst)
				{
					isFirst=false;
					//字段
					if (CDatabaseFactory::m_enumDatabaseType==OracleType)
						strColumns+=(*itr);
					else
						strColumns+="["+(*itr)+"]";
					//值
					var.bstrVal = (*itr);
					adoFldType = pRecordSet->GetFields()->GetItem(var.bstrVal)->GetType();
					if(adoFldType == ADODB::adDate || adoFldType == ADODB::adDBTimeStamp)
					{
						switch(CDatabaseFactory::m_enumDatabaseType)
						{
						case AccessType:
							strValues += "#" + (*itr2) + "#";
							break;
						case SqlServerType:
							strValues += "'" + (*itr2) + "'";
							break;
						case OracleType:
							strValues += "to_date('" + (*itr2) + "','yyyy-mm-dd')";
							break;
						}
					}
					else if( (adoFldType == ADODB::adInteger ) || (adoFldType == ADODB::adNumeric) || (adoFldType == ADODB::adDouble ) )
						strValues+=(*itr2);
					else
						strValues+="'"+(*itr2)+"'";
				}
				else
				{
					strTemp=(char *)(*itr);
					if (strTemp=="ID")
					{
						itr++;
						itr2++;
						continue;
					}

					if (CDatabaseFactory::m_enumDatabaseType==OracleType)
						strColumns+=","+(*itr);
					else
						strColumns+=",["+(*itr)+"]";

					var.bstrVal = (*itr);
					adoFldType = pRecordSet->GetFields()->GetItem(var.bstrVal)->GetType();
					if(adoFldType == ADODB::adDate || adoFldType == ADODB::adDBTimeStamp)
					{
						switch(CDatabaseFactory::m_enumDatabaseType)
						{
						case AccessType:
							strValues += ",#" + (*itr2) + "#";
							break;
						case SqlServerType:
							strValues += ",'" + (*itr2) + "'";
							break;
						case OracleType:
							strValues += ",to_date('" + (*itr2) + "','yyyy-mm-dd')";
							break;
						}
					}
					else if( (adoFldType == ADODB::adInteger ) || (adoFldType == ADODB::adNumeric) || (adoFldType == ADODB::adDouble ) )
						strValues+=","+(*itr2);
					else
						strValues+=",'"+(*itr2)+"'";
				}
				itr++;
				itr2++;
			}
			strSql2 = "INSERT INTO " + strTypeName + " ( " +  strColumns + " ) VALUES (" + strValues + ")";
		}
		else
		{//具体类别表存在记录
			_bstr_t strUpdateFormat;
			bool isFirst=true;
			vector<_bstr_t>::iterator itr = vfileds.begin();
			vector<_bstr_t>::iterator itr2=vValues.begin();
			while(itr!=vfileds.end()&&itr2!=vValues.end())
			{
				//字段
				if (isFirst)
				{
					isFirst=false;
					if (CDatabaseFactory::m_enumDatabaseType==OracleType)
						strUpdateFormat+=(*itr);
					else
						strUpdateFormat+="["+(*itr)+"]";
				}
				else
				{
					strTemp=(char *)(*itr);
					if (strTemp=="ID")
					{
						itr++;
						itr2++;
						continue;
					}

					if (CDatabaseFactory::m_enumDatabaseType==OracleType)
						strUpdateFormat+=","+(*itr);
					else
						strUpdateFormat+=",["+(*itr)+"]";
				}
				//值
				var.bstrVal = (*itr);
				adoFldType = pRecordSet->GetFields()->GetItem(var.bstrVal)->GetType();
				if(adoFldType == ADODB::adDate || adoFldType == ADODB::adDBTimeStamp)
				{
					switch(CDatabaseFactory::m_enumDatabaseType)
					{
					case AccessType:
						strUpdateFormat += "= #"+(*itr2)+"#";
						break;
					case SqlServerType:
						strUpdateFormat+="='"+(*itr2)+"'";
						break;
					case OracleType:
						strUpdateFormat += " = to_date('" + (*itr2) + "','yyyy-mm-dd')";
						break;
					}
				}
				else if( (adoFldType == ADODB::adInteger ) || (adoFldType == ADODB::adNumeric) || (adoFldType == ADODB::adDouble ) )
					strUpdateFormat += "=" + (*itr2);
				else
					strUpdateFormat+="='"+(*itr2)+"'";
				//循环
				itr++;
				itr2++;
			}
			strSql2 = "UPDATE " + strTypeName + " SET " + strUpdateFormat + " WHERE [GUID] ='" + strGuid + "'";
		}

	}
	vecStrSql.push_back(strSql1);
	vecStrSql.push_back(strSql2);
	return theBllApp.m_pDB->ExcuteTrans(vecStrSql,adCmdText);
}