Beispiel #1
0
//吊架和支架数据的导入pfg20050615
//flag=0 为吊架; flag=1 为支架
//记录集是结果集 对应ZA表
//rsHR记录集是数据源集(弹簧、吊架)
//ltemp 支吊架号
void CAESARIIToPHS::ImportHangerRestraints(_RecordsetPtr rsData,_RecordsetPtr rsHR,long &ltemp,long &FileNameID,char *strPSAVER,long &node,int flag)
{
	_variant_t tmpvar; 
	long lTmp;
	try
	{
		if(flag)
		{
			tmpvar=rsHR->GetCollect(_T("node_num"));
			lTmp=vtoi(rsHR->GetCollect(_T("RES_TYPEID")));//pfg20050624
		}
		else
		{
			tmpvar=rsHR->GetCollect(_T("node"));
		}
		if(tmpvar.vt==VT_EMPTY||tmpvar.vt==VT_NULL)
		{
			return;
		}
		else
		{
			node=vtoi(tmpvar);
		}
		if ( node < 1e-6 ) //5.2版本中所有的约束信息会导入INPUT_RESTRAINTS表中(同一约束点会有四条记录,所以会有NODE_NUM为-1情况)
			return;
		if(rsData->GetRecordCount()>0)
		{
			rsData->MoveFirst();
		}
		
		rsData->Filter = _variant_t(CString("[jsdbh1] = ") + ltos(node)+" AND [FileNameID]="+ltos(FileNameID));
		
		if (rsData->adoEOF&&rsData->BOF)
		{
			rsData->AddNew();
			rsData->PutCollect("VolumeID",_variant_t(EDIBgbl::SelVlmID));
			rsData->PutCollect("zdjh",_variant_t((long)(ltemp+1)));
			rsData->PutCollect("FileNameID",_variant_t(FileNameID));
			ltemp++;
			rsData->Update();					
		}
		rsData->PutCollect("PSAver", _variant_t(strPSAVER));
		rsData->PutCollect("UPxyz",_variant_t((long)m_iUPxyz));
		rsData->PutCollect("JSDBH1", _variant_t((long)node));
		rsData->Update();
	}
	catch (_com_error &e)
	{
		CString strMsg;
		strMsg.Format("%s:%d %s", __FILE__, __LINE__, (LPSTR)e.Description());
		AfxMessageBox(strMsg);
	}
}
Beispiel #2
0
CString CADODB::GetDataStr(_RecordsetPtr pRecordset)
{
    if (NULL == pRecordset) return _T("");

    CString strData;
    int nFieldsCount = pRecordset->Fields->GetCount(); // 字段数;
    for (int i = 0; i < nFieldsCount; i++)
    {
        char *pszName = _com_util::ConvertBSTRToString(pRecordset->Fields->GetItem((long)i)->GetName()); // 字段名

        strData += pszName;
        strData += _T("\t");

        delete[] pszName;
    }

    strData += _T("\n");

    while (!pRecordset->EndOfFile)  //遍历所有记录
    {
        for (int i = 0; i < nFieldsCount; i++)
        {
            strData += pRecordset->GetCollect((long)i);
            strData += _T("\t");
        }
        strData += _T("\n");

        pRecordset->MoveNext();
    }

    return strData;
}
Beispiel #3
0
   void main()
  {
	  string sql;
      _RecordsetPtr m_pRecordset;
      sql="select * from testDB";
      _bstr_t bstr_t(sql.c_str());
      m_pRecordset= GetRecordset(bstr_t);

	  _variant_t vID;
	  _variant_t vName;
	  _variant_t vAge;
	  while(!m_pRecordset->adoEOF)
	  {
		  //取得第1列的值,从0开始计数,你也可以直接给出列的名称,如下一行
		  vID = m_pRecordset->GetCollect(_variant_t((long)0));
		  vName = m_pRecordset->GetCollect("Name");
		  vName = m_pRecordset->GetCollect("Age");
		  cout<<vID.iVal<<endl;
		  //cout<<(char*)(_bstr_t)vName<<endl;
		  //cout<<(LPCTSTR)(_bstr_t)vName<<endl;
		  cout<<vName.bstrVal<<endl;
		  cout<<vAge.intVal<<endl;


		  m_pRecordset->MoveNext();
	
  }
	  //添加3条新的纪录
	  for(int i=0;i<3;i++){
		  m_pRecordset->AddNew();
          m_pRecordset->PutCollect("ID", _variant_t("3"));
          m_pRecordset->PutCollect("Name", _variant_t("edward"));
          m_pRecordset->PutCollect("Age", _variant_t("18"));
	  }
	   m_pRecordset->Update();
	  cout<<"添加成功"<<endl;

	 //移到首条记录  
    //m_pRecordset->MoveFirst();      
    //删除当前记录  
    //m_pRecordset->Delete(adAffectCurrent);

      ExitConnect();
  }
Beispiel #4
0
int CNetworkTree::OnReadGroup(_RecordsetPtr xRecordset, CString& xUserGrp, CString& xGroupId)
{
	_variant_t TheValue = xRecordset->GetCollect( "xentercode" );
	ASSERT( VT_NULL != TheValue.vt ); xGroupId = (LPCTSTR)(_bstr_t)TheValue;
	
	TheValue = xRecordset->GetCollect( "xentername" );
	if ( VT_NULL == TheValue.vt ) xUserGrp = _T("<NULL>");
	else	xUserGrp = (LPCTSTR)(_bstr_t)TheValue;
	
	TheValue = xRecordset->GetCollect( "xexpiredate" );
	if ( VT_NULL != TheValue.vt )
	{
		COleDateTime tt = TheValue; tt.SetTime( 0, 0, 0 );
		
		COleDateTimeSpan tSpan = COleDateTime::GetCurrentTime() - tt;
		if ( tSpan.GetTotalDays() > 0 ) return EBase_NoPay;
	}
	
	return 0;
}
void CBllHelp::QueryByCondit(_RecordsetPtr pRecordSet,vector<string> &vecField, vector<string> &vecRecordSet, long &lFieldCounts)
{
	//判断存在记录
	if(pRecordSet == NULL)
		return ;

	if (!vecRecordSet.empty())
	{
		vecRecordSet.clear();
	}
	if (!vecField.empty())
	{
		vecField.clear();
	}
	try
	{
		//字段个数
		lFieldCounts = pRecordSet->GetFields()->GetCount();
		adoDataTypeEnum enumDataType;
		_bstr_t str;
		//字段名称、类型、大小
		for(long i = 0; i<lFieldCounts; i++)
		{
			str= pRecordSet->GetFields()->GetItem(i)->GetName();
			vecField.push_back((LPSTR)str);
			enumDataType = pRecordSet->GetFields()->GetItem(i)->GetType();
			str = GetDataTypeString(enumDataType);
			vecField.push_back((LPSTR)str);
			str = pRecordSet->GetFields()->GetItem(i)->GetDefinedSize();
			vecField.push_back((LPSTR)str);
		}
		pRecordSet->MoveFirst();

		long lCounts = 0;
		_variant_t var;
		//获取记录
		while(!pRecordSet->adoEOF)
		{
			for(long j=0; j<lFieldCounts; j++)
			{
				var=pRecordSet->GetCollect(j);
				str=(_bstr_t)(var.vt==1?"":var);
				vecRecordSet.push_back((LPSTR)str);	
			}
			pRecordSet->MoveNext();
			lCounts++;
		}
	}
	catch(_com_error e)
	{
		//AfxMessageBox("记录为空");
	}
}
Beispiel #6
0
BYTE GetCollectByte(_RecordsetPtr m_pRecordset, char* key)
{
	try{
		VARIANT var = m_pRecordset->GetCollect(key);
		if(var.vt == VT_NULL)
			return NULL;
		return var.intVal;
	}
	catch(_com_error& e){
		AfxMessageBox(e.ErrorMessage());
	}
	return NULL;
}
Beispiel #7
0
long GetCollectMyLong(_RecordsetPtr m_pRecordset, char* key)
{
	try{
		VARIANT var = m_pRecordset->GetCollect(key);
		if(var.vt == VT_NULL)
			return NULL;

		return (long)var.dblVal;
	}
	catch(_com_error& e){
		AfxMessageBox(e.ErrorMessage());
	}
		return NULL;
}
Beispiel #8
0
CString GetCollectString(_RecordsetPtr m_pRecordset, char* key)
{
	try{
		VARIANT var = m_pRecordset->GetCollect(key);
		CString res;
		if(var.vt == VT_NULL)
			return res;
		res.Format("%s", (char*)(_bstr_t)var);
		return res;
	}
	catch(_com_error& e){
		AfxMessageBox(e.ErrorMessage());
	}
	return "";
}
Beispiel #9
0
//////////////////////////////////////////////////////////////////////////////////////////////
//
// 从记录集中返回指定字段的值
//
// IRecordset[in]	记录集智能指针	
// FieldsName[in]	字段名
// RetValue[out]	返回的变量
//
// 如果有异常将调用ExceptionInfo函数
//
void CFoxBase::GetTbValue(_RecordsetPtr IRecordset, _variant_t FieldsName, int &RetValue)
{
	_variant_t TempValue;
	CString strTemp;

	if(IRecordset==NULL)
		return;
	
	try
	{
		TempValue=IRecordset->GetCollect(FieldsName);
		
		if(TempValue.vt!=VT_NULL)
		{
			if(TempValue.vt==VT_BSTR)
			{
				CString Temp;
				Temp=(TCHAR*)(_bstr_t)TempValue;
				Temp.TrimLeft();

				if(Temp.GetLength()==0)
				{
					RetValue=0;
					//break;
					return;
				}

			}
			RetValue=(long)TempValue;
		}
		else
		{
			RetValue=0;
		}
	}
	catch(_com_error &e)
	{
		RetValue=0;
//		ExceptionInfo(e);

		strTemp.Format(_T("错误在从%s字段读取数据时"),(LPCTSTR)(_bstr_t)FieldsName);
		Exception::SetAdditiveInfo(strTemp);

		ReportExceptionErrorLV2(e);
		throw;
	}
}
Beispiel #10
0
CString GetCollectDate(_RecordsetPtr m_pRecordset, char* key)
{
	try{
		VARIANT var = m_pRecordset->GetCollect(key);
		if(var.vt == VT_NULL)
			return "";
		
		SYSTEMTIME st;
		VariantTimeToSystemTime(var.date, &st);
		CString date;
		date.Format("%d-%02d-%02d %02d:%02d", st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute);
		return date;
	}
	catch(_com_error& e){
		AfxMessageBox(e.ErrorMessage());
	}
		return "";
}
Beispiel #11
0
BOOL CPagerChannel::LoadFrom(_RecordsetPtr xRecordset)
{
	m_pRecordset = xRecordset->Clone( adLockOptimistic );
	m_pRecordset->Filter = "xjsjbh = " + (_bstr_t)xRecordset->GetCollect("xjsjbh");

//_variant_t xjsjbh = m_pRecordset->GetCollect( "xjsjbh" );
//	theApp.Message(MSG_ERROR,"---------->debug:[%i][%i] reccc=%i", m_nChan, xjsjbh.lVal,
//		m_pRecordset->GetRecordCount());
	
	CDialPacket* pPacket = new CDialPacket;
	pPacket->SetLocalId( "96031222" );
	
	_variant_t TheValue = m_pRecordset->GetCollect( "xPhoneNum" );
	if ( VT_NULL == TheValue.vt ) pPacket->SetRemoteId( "" );
	else pPacket->SetRemoteId( (LPCTSTR)(_bstr_t)TheValue );
	
	TheValue = m_pRecordset->GetCollect( "xCaller" );
	if ( VT_NULL == TheValue.vt ) pPacket->SetFeeNumber( "" );
	else pPacket->SetFeeNumber( (LPCTSTR)(_bstr_t)TheValue );
	
	CHAR xCallerId[MAX_PHONE + 1]; ZeroMemory(xCallerId, MAX_PHONE + 1);
	pPacket->GetFeeNumber(xCallerId); pPacket->SetCallerId(xCallerId);
#if 1	// 重新指定计费号码
	TheValue = m_pRecordset->GetCollect( "xFeeNumber" );
	if ( VT_NULL != TheValue.vt ) pPacket->SetFeeNumber( (LPCTSTR)(_bstr_t)TheValue );
#endif
	
	OnDialPacket( pPacket ); pPacket->Release();
	
#if 1	
	TheValue = m_pRecordset->GetCollect( "xPCMName" );
	CString xUsrLvFile = (LPCTSTR)(_bstr_t)TheValue;
	xUsrLvFile.TrimLeft(); xUsrLvFile.TrimRight();
	
	CString xCallType = ReadPagerType( xUsrLvFile, CA_HOOK );
	if ( xCallType.CompareNoCase(CallType) ) CopyMemory( CallType, (LPCTSTR)(xCallType), MAX_CALLTYPE );
	//if ( IsMusic(pPager->UsrLvFile) ) CopyMemory( pPager->CallType, "BEST", MAX_CALLTYPE );
#endif
	
	UpdateState( _PENDING_ );
	m_bPending	= TRUE;
	return TRUE;
}
Beispiel #12
0
DWORD CNHSQLServerDBO::GetFieldValue(const _RecordsetPtr &pRecordset, _variant_t &vFieldValue, const wchar_t *const pwchFieldName)
{
    assert(NULL != pRecordset);
    assert(NULL != pwchFieldName);

    DWORD dwReturn(0x00);

    try
    {
        vFieldValue = pRecordset->GetCollect(_variant_t(pwchFieldName));
    }
    catch (_com_error &e)
    {
//#ifdef _DEBUG
        const int nErrMsgLength(MAX_PATH);
        wchar_t *pwchErrMsg = new wchar_t[nErrMsgLength]();
        _snwprintf_s(pwchErrMsg, nErrMsgLength, _TRUNCATE, L"CNHSQLServerDBO::GetFieldValue发生错误(FieldName:%s)。", pwchFieldName);
        // 输出错误信息到输出窗口
        OutputDebugStringW(L"\t");
        OutputDebugStringW(pwchErrMsg);
        OutputDebugStringW(L"\n");
        // 输出错误信息到日志文件
        if (0 != wcscmp(m_wchLogFilePath, L""))
        {
            // 当日志文件路径不为空时,写日志
            CNHLogAPI::WriteLogEx(m_wchLogFilePath, LOG_ERR, L"NHSQLServerDBO", pwchErrMsg);
        }
        if (NULL != pwchErrMsg)
        {
            delete[] pwchErrMsg;
            pwchErrMsg = NULL;
        }
        OutputDBErrMsg(e);
//#endif
        dwReturn = 0x01;
    }

    return dwReturn;
}
Beispiel #13
0
//////////////////////////////////////////////////////////////////////////////////////////////
//
// 从记录集中返回指定字段的值
//
// IRecordset[in]	记录集智能指针	
// FieldsName[in]	字段名
// RetValue[out]	返回的变量
//
// 如果有异常将调用ExceptionInfo函数
//
void CFoxBase::GetTbValue(_RecordsetPtr IRecordset, _variant_t FieldsName, CString &RetValue)
{
	_variant_t TempValue;
	CString strTemp;

	if(IRecordset==NULL)
		return;
	
	try
	{
		TempValue=IRecordset->GetCollect(FieldsName);
		
		if(TempValue.vt!=VT_NULL)
		{
			RetValue=(TCHAR*)(_bstr_t)TempValue;

			RetValue.TrimLeft();
			RetValue.TrimRight();
		}
		else
		{
			RetValue=_T("");
		}
	}
	catch(_com_error &e)
	{
		RetValue=_T("");
//		ExceptionInfo(e);

		strTemp.Format(_T("错误在从%s字段读取数据时"),(LPCTSTR)(_bstr_t)FieldsName);
		Exception::SetAdditiveInfo(strTemp);

		ReportExceptionErrorLV2(e);
		throw;
	}
}
Beispiel #14
0
BOOL CFoxBase::CopyData(_RecordsetPtr &IRecordS, _RecordsetPtr &IRecordD)
{
	_variant_t TempValue;
	short Item;
	FieldsPtr IFields;
	FieldPtr IField;

	if(IRecordS==NULL || IRecordD==NULL)
	{
		ExceptionInfo(_T("Source Recordset or destination Recordset cann't be empty"));
		return FALSE;
	}

	if(IRecordS->adoEOF && IRecordS->BOF)
	{
		return TRUE;
	}

	if(!IRecordD->adoEOF || !IRecordD->BOF)
	{
		try
		{
			IRecordD->MoveLast();
		}
		catch(_com_error &e)
		{
			ExceptionInfo(e);
			return FALSE;
		}
	}

	try
	{
		IRecordS->MoveFirst();
	}
	catch(_com_error &e)
	{
		ExceptionInfo(e);
		return FALSE;
	}

	try
	{
		while(!IRecordS->adoEOF)
		{
			IRecordS->get_Fields(&IFields);
			IRecordD->AddNew();
			for(Item=0;Item<IFields->GetCount();Item++)
			{
				IFields->get_Item(_variant_t(Item),&IField);

				TempValue=IRecordS->GetCollect(_variant_t(IField->GetName()));
				IRecordD->PutCollect(_variant_t(IField->GetName()),TempValue);

				IField.Release();
			}
			IRecordD->Update();
			IFields.Release();
			IRecordS->MoveNext();
		}
	}
	catch(_com_error &e)
	{
		ExceptionInfo(e);
		return FALSE;
	}


	return TRUE;
}
Beispiel #15
0
////////////////////////////////////////////////////
//
//从表的当前记录开始寻找指定的逻辑关系
//
//IRecordset[in] 记录集智能指针
//FieldsName[in] 字段名
//Relations[in]  逻辑关系,等于、不等于……
//Value[in]		 输入与FieldsName比较的值
//
//函数成功返回TRUE,否则返回FALSE
//如果需比较的字段与关系不匹配会抛出_com_error异常
//指针指向找到的记录上
//
BOOL CFoxBase::LocateForCurrent(_RecordsetPtr IRecordset, _variant_t FieldsName, int Relations, _variant_t Value)
{
	_variant_t tempvalue;
	CString tempstr;

	if(IRecordset==NULL || Value.vt==VT_NULL)
		return FALSE;
	

	while(!IRecordset->adoEOF)
	{
		tempvalue=IRecordset->GetCollect(FieldsName);

		if(tempvalue.vt==VT_NULL)
		{
			IRecordset->MoveNext();
			continue;
		}

		switch(Relations)
		{
		case CFoxBase::EQUAL:			// 等于
			if(Value.vt==VT_BSTR)
			{
			//	tempstr=(TCHAR*)(_bstr_t)tempvalue;
			//	if(tempstr.Find((TCHAR*)(_bstr_t)Value) != -1)
			//		return TRUE;
			//	else
			//		break;
				tempstr = vtos(tempvalue);
				if (!tempstr.Compare(vtos(Value)))
				{
					return TRUE;
				}
				else
				{
					break;
				}

			}

			if(tempvalue==Value)
				return TRUE;
			else
				break;

		case CFoxBase::UNEQUAL:				//不等于
			if(tempvalue!=Value)
				return TRUE;
			else
				break;

		case CFoxBase::GREATER:				//大于
			if((double)tempvalue>(double)Value)
				return TRUE;
			else
				break;

		case CFoxBase::GREATER_OR_EQUAL:	//大于等于
			if((double)tempvalue>=(double)Value)
				return TRUE;
			else
				break;

		case CFoxBase::LESS:				//小于
			if((double)tempvalue<(double)Value)
				return TRUE;
			else
				break;

		case CFoxBase::LESS_OR_EQUAL:		//小于等于
			if((double)tempvalue<=(double)Value)
				return TRUE;
			else
				break;

		default:
			return FALSE;

		}

		IRecordset->MoveNext();
	}

	if(IRecordset->adoEOF)
		return FALSE;

	return TRUE;
}
Beispiel #16
0
/////////////////////////////////////////////////////
//
// 在记录集的当前位置插入一条新记录
//
// IRecord[in]	记录集智能指针
//
// 函数成功返回TRUE,否则返回FALSE
// 如果有异常将调用ExceptionInfo函数
//
// 函数成功后记录集将指向新插入的空记录
//
BOOL CFoxBase::InsertNew(_RecordsetPtr &IRecord,int after)
{
	int pos;
	CMap<short,short&,_variant_t,_variant_t&> FieldMap;
	CMap<short,short&,_variant_t,_variant_t&> newFieldMap;		//将新增加的记录的值记下来
	_variant_t TempValue;
	short Item;
	FieldsPtr IFields;
	FieldPtr IField;
    int pos1;
	int	nCount;		//字段个数.

	if(IRecord==NULL)
	{
		ExceptionInfo(_T("Recordset cann't be empty"));
		return FALSE;
	}

	//如果记录集为空将插入一条新记录
	if(IRecord->adoEOF && IRecord->BOF)
	{
		try
		{
			IRecord->AddNew();
			IRecord->Update();
		}
		catch(_com_error &e)
		{
			ExceptionInfo(e);
			return FALSE;
		}
		return TRUE;
	}
	else if(IRecord->adoEOF)
	{
		IRecord->AddNew();
		IRecord->Update();
		IRecord->MoveLast();
		return true;
	}

	for(pos=0; !IRecord->adoEOF ;pos++)
	{
		try
		{
			IRecord->MoveNext();
		}
		catch(_com_error &e)
		{
			ExceptionInfo(e);
			return FALSE;
		}
	}

	//
	// 查如一条新记录,并将刚开始所指的以后的记录向后移
	//
	try
	{
		IRecord->AddNew();
		IRecord->Update();
		IRecord->MoveLast();

		//将新增加的记录的值记下来.
		IFields = IRecord->GetFields();
		nCount = IFields->GetCount();   //字段个数

		for (Item = 0; Item < nCount; Item++)
		{
			newFieldMap[Item] = IRecord->GetCollect(_variant_t(Item));
		}
		IFields.Release();
		//		

		IRecord->MovePrevious();
	}
	catch(_com_error &e)
	{
		ExceptionInfo(e);
		return FALSE;
	}
	if(after==1)
    pos--;  //使pos再减一,变成在指针的当前位置上加入一条新记录,insert blank
	pos1=pos;
	while(pos>0)
	{
		try
		{
			for(Item=0;Item<nCount;Item++)
			{
				TempValue=IRecord->GetCollect(_variant_t(Item));
				FieldMap[Item]=TempValue;
			}

			IRecord->MoveNext();

			for(Item=0;Item<nCount;Item++)
			{
				IRecord->PutCollect(_variant_t(Item),FieldMap[Item]);
			}
			IRecord->Update();

			IRecord->MovePrevious();

			pos--;
			if(pos>0)
				IRecord->MovePrevious();
		}
		catch(_com_error &e)
		{
			ExceptionInfo(e);
			return FALSE;
		}
	}

	// 使最开始所指的记录内容为空
	if(pos1==0 && after==1) {IRecord->MoveNext();}
	else
	{

	try
	{
		TempValue.Clear();

		for(Item=0;Item<nCount;Item++)
		{
			IRecord->PutCollect(_variant_t(Item),newFieldMap[Item]);
		}
		IRecord->Update();
	}
	catch(_com_error &e)
	{
		ExceptionInfo(e);
		return FALSE;
	}
	}

	return TRUE;
}
Beispiel #17
0
//! 读取个人房屋信息
void CRsMail::LoadMail(CDBMail* mail, _RecordsetPtr &rs, _ConnectionPtr& cn)
{
	if(!mail) return;
	if(rs->GetadoEOF()) return;

	if(cn == NULL)
	{
		AddLogText(CStringReading::LoadString(IDS_DBS_RSDUPRGN,STR_DBS_DUPRGN_CNPTRNULL));
		return;
	}

	try
	{
		//!
		CDataEntityManager::EntityPropertyMapItr epItr = mail->GetDataEntityManager().GetEntityPropertyMap().begin();
		for(; epItr != mail->GetDataEntityManager().GetEntityPropertyMap().end(); epItr++)
		{
			if(rs->GetadoEOF()) break;

			if(epItr->second)
			{
				switch(epItr->second->GetDataType())
				{
				case DATA_OBJECT_TIME:
					{
						_variant_t var = rs->GetCollect(epItr->first.c_str());
						long timeBuf[6] = {0};
						if( var.vt != VT_NULL ) 
						{
							SYSTEMTIME st;
							VariantTimeToSystemTime(var.date, &st);

							timeBuf[0] = st.wYear;
							timeBuf[1] = st.wMonth;
							timeBuf[2] = st.wDay;
							timeBuf[3] = st.wHour;
							timeBuf[4] = st.wMinute;
							timeBuf[5] = st.wSecond;
							epItr->second->SetBufAttr(0, (void*)&timeBuf[0], sizeof(DWORD)*6);
						}		
					}
					break;
				case  DATA_OBJECT_STRING:
					{
						string strValue = (_bstr_t)rs->GetCollect(epItr->first.c_str());
						epItr->second->SetStringAttr(0, strValue.c_str());
					}
					break;
				case DATA_OBJECT_BUFFER:
					{
						LoadBufferField((CBaseDBEntity*)mail, epItr->first.c_str(), rs);
					}
					break;
				case DATA_OBJECT_GUID:
					{
						CGUID tGUID(_bstr_t(rs->GetCollect(epItr->first.c_str())));
						epItr->second->SetGuidAttr(0, tGUID);
					}
					break;
				case DATA_OBJECT_FLOAT:
				case DATA_OBJECT_LONG:
				case DATA_OBJECT_SHORT:
				case DATA_OBJECT_ULONG:
				case DATA_OBJECT_USHORT:
				case DATA_OBJECT_BOOL:
				case DATA_OBJECT_CHAR:
				case DATA_OBJECT_BYTE:
				case DATA_OBJECT_WORD:
				case DATA_OBJECT_DWORD:
					{
						long value = rs->GetCollect(epItr->first.c_str());
						epItr->second->SetLongAttr(0, value);
					}
					break;
				}
			}
		}
		// 读取房间内物品
		LoadMailGoods(mail->GetExID(), mail->GetGoodsGroupPtr(), cn);
		return;
	}
	catch (_com_error &e)
	{
		PrintErr(CStringReading::LoadString(IDS_DBS_RSDUPRGN,STR_DBS_DUPRGN_LOADONERGNFAIL), e);
		return;
	}

	return;
}
void CItemCommerceSearchView::RefreshGrid(_RecordsetPtr& pSet,int row)
{
	int iCol = m_cDisplay.GetColumnCount()-1;
    GV_ITEM Item;
	COleDateTime dTemp,dCompare;
    CGridCellCheck* pCell;
	BOOL bCheck;
	CString str;

	Item.mask = GVIF_TEXT|GVIF_FORMAT|GVL_BOTH|GVL_VERT ;
	Item.nFormat = DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS;
	m_cDisplay.SetListMode(TRUE);
	m_cDisplay.SetSingleRowSelection(FALSE);
	Item.row = row;
	Item.col = 0;
	Item.strText.Format("%d",row);
	m_cDisplay.SetItem(&Item);
	for(int i = 0; i<iCol; i++)
	{

		Item.col = i+1;

		Holder = pSet->GetCollect(m_iName[i].sItem.AllocSysString());
		switch(m_iName[i].tType) {
		case 1:
			Item.strText = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
			break;
		case 2:
			dTemp = Holder.date;
			str = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
			if(str.IsEmpty())
			{
				Item.strText = _T("- -");
			}
			else
			    Item.strText = dTemp.Format("%Y-%m-%d");
			break;
		case 3:
		//	dbNum = (double)Holder;
		//	Item.strText.Format("%f",dbNum);
			Item.strText = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
			break;
		case  4:
			m_cDisplay.SetCellType(row,i+1, RUNTIME_CLASS(CGridCellCheck));
			pCell = (CGridCellCheck*)m_cDisplay.GetCell(row,i+1);
			bCheck = (bool)Holder;
			if(bCheck)
				pCell->SetCheck(TRUE);
			else
				pCell->SetCheck(FALSE);
			Item.strText = "";
			break;
		default:
			break;
		}

		m_cDisplay.SetItem(&Item);
	} 
	m_cDisplay.Invalidate();
    m_cDisplay.AutoSizeColumns();
}