Esempio n. 1
1
HRESULT CCOMDispatchHelper::GetPropertyItemValues(const IDispatchPtr& pICollection, int iIndex, 
												  _bstr_t& bstrName, _bstr_t& bstrValue)
{
	HRESULT hr = E_FAIL;
	variant_t result, vIndex;
	vIndex.lVal = iIndex;
	vIndex.vt = VT_I4;
	hr = AutoWrap(DISPATCH_PROPERTYGET|DISPATCH_METHOD, &result, pICollection, L"Item", 1, vIndex);
	RETURN_FAILED(hr);

	IDispatchPtr spPropItem = result.pdispVal;

	variant_t vPropItem;

	hr = AutoWrap(DISPATCH_PROPERTYGET|DISPATCH_METHOD, &vPropItem, spPropItem, L"Name", 0);
	RETURN_FAILED(hr);

	bstrName.Assign(vPropItem.bstrVal);

	hr = AutoWrap(DISPATCH_PROPERTYGET|DISPATCH_METHOD, &vPropItem, spPropItem, L"Value", 0);
	RETURN_FAILED(hr);

	//ComConvertUtils aComConvertUtils;

	//TODO look at a better way of casting a variant_t to a PROPVARIANT
	bstrValue = (LPCTSTR)PropVariantToString(*(PROPVARIANT*)(VARIANT*)&vPropItem);

	return hr;
}
//查询时间段内有效的流行线
_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. 3
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. 5
0
STDMETHODIMP CPluginImpl::get_XMLInfo( BSTR *pVal )
{
    try {
        if ( !pVal )
            return E_POINTER;
        *pVal = 0;

        static const _bstr_t data(
            OLESTR("<grym_plugin_info>")
            OLESTR("<name>Export</name>")
            OLESTR("<description>Blip-blop! Version") PLUGIN_VER_STR OLESTR("</description>")
            OLESTR("<copyright>gureedo, 2012, Freeware</copyright>")
            OLESTR("<tag>EXPORtPLUGIN</tag>")
            OLESTR("<supported_languages>")
            OLESTR("<language>*</language>")
            OLESTR("</supported_languages>")
            OLESTR("<requirements>")
            OLESTR("<requirement_api>API-1.4</requirement_api>")
            OLESTR("</requirements>")
            OLESTR("</grym_plugin_info>")
        );

        *pVal = data.copy();

        return S_OK;
    } catch(...) {
    }

    return E_FAIL;
}
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);
}
Esempio n. 7
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);
}
Esempio n. 8
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;
	}
}
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. 10
0
//比较两个BSTR类型的字符串(忽略大小写)
int CompareBSTRNoCase(_bstr_t bstr1, _bstr_t bstr2)
{
	CComBSTR comBstr1(bstr1.GetBSTR());
	CComBSTR comBstr2(bstr2.GetBSTR());

	comBstr1.ToLower();
	comBstr2.ToLower();

	if (comBstr1 == comBstr2)
		return 0;
	else if (comBstr1 > comBstr2)
		return 1;
	else
		return -1;

}
//加载流行线节点列表
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::_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);
}
//加载流行线信息
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;
}
Esempio n. 16
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;
}
_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;
}
Esempio n. 20
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);
}
//检测流行线属性录入的冲突
//参数: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. 22
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;
}
//清除流行线节点
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);
}
//加载流行线节点数据集
_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 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;
}
HRESULT CTCPropBagOnRegKey::_LogError(const _bstr_t& strFn,
  const _bstr_t& strDesc, HRESULT hr, LPCOLESTR pszPropName,
  IErrorLog* pErrorLog)
{
  // Create the source string
  _bstr_t strSrc, strSubkey(GetSubkey());
  if (!strSubkey.length())
    strSrc.Format(_T("CTCPropBagOnRegKey::_%s(\"%ls\")"), strFn,
      pszPropName);
  else
    strSrc.Format(_T("CTCPropBagOnRegKey::_%s(\"%s\\%ls\")"), strFn,
      strSubkey, pszPropName);

  // Output a trace message under _DEBUG builds
  TRACE2("%s: %s\n", strSrc, strDesc);

  // Log an error, if an IErrorLog interface is specified
  if (NULL != pErrorLog)
  {
    // Allocate BSTR's from the formatted strings
    BSTR bstrSrc = strSrc.AllocSysString();
    BSTR bstrDesc = strDesc.AllocSysString();

    // Create an EXCEPINFO structure and log the error
    EXCEPINFO ei = {0, 0, bstrSrc, bstrDesc, NULL, 0, NULL, NULL, hr};
    HRESULT hrAdd = pErrorLog->AddError(pszPropName, &ei);

    // Free the allocated BSTR's
    SysFreeString(bstrDesc);
    SysFreeString(bstrSrc);

    // Handle an unsuccessful IErrorLog::AddError call
    if (FAILED(hrAdd))
    {
      TRACE1("%s: pErrorLog->AddError() failed!\n", strSrc);
      AfxThrowOleException(hrAdd);
    }
  }

  // Indicate failure
  return hr;
}
//加载属性:参数:属性表中的编号
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);
}