Beispiel #1
0
void CDlg::OnShowGrid(CString strSql,_RecordsetPtr& rs,_CommandPtr& Cmd,CDatagrid1& Grd,void (*pFGrd)(CDatagrid1&,_RecordsetPtr&))
{
    if(!strSql.IsEmpty()) {
        Cmd->CommandText = (_bstr_t)strSql;
        try {
            Grd.putref_DataSource(NULL);
            if(rs->State==adStateOpen) rs->Close();
            rs->Open(m_vNULL,m_vNULL,adOpenDynamic,adLockOptimistic,adCmdText);
            m_Flg = false;
//			m_Flg = true;
//AfxMessageBox(L"Before OnShow Grd.putref_DataSource((LPUNKNOWN)rs)");
            Grd.putref_DataSource((LPUNKNOWN)rs);
//AfxMessageBox(L"After OnShow Grd.putref_DataSource((LPUNKNOWN)rs)");
//			m_Flg = false;
            /*----*///			m_Flg = true;
            m_CurCol = Grd.get_Col();
            //		s.Format("%i",m_CurCol);
            //		AfxMessageBox(s);
            if(m_CurCol==-1 || m_CurCol==0 ) {
                m_CurCol = 1;
            }
            m_iCurType = GetTypeCol(rs,m_CurCol);
            pFGrd(Grd,rs);
        }
        catch(_com_error& e) {
            Grd.putref_DataSource(NULL);
            AfxMessageBox(e.ErrorMessage());
        }
    }
}
UINT CBADO::GetRecordCount( _RecordsetPtr pRecordset )
{
	int nCount = 0;
	try 
	{
		if(pRecordset->EndOfFile)
		{
			Sleep(1);
			return 0;
		}
			pRecordset->MoveFirst();
	}
	catch(...)
	{

		return 0;
	}

	if (pRecordset->FirstOfFile)
		return 0;
	while(!pRecordset->EndOfFile)
	{   
		pRecordset->MoveNext();
		nCount = nCount + 1;
	}
	pRecordset->MoveFirst();
	return nCount;

}
Beispiel #3
0
void CDlg::OnShowGrid(CString strSql,_RecordsetPtr& rs,_CommandPtr& Cmd,CDatagrid1& Grd,void (*pFGrd)(CDatagrid1&,_RecordsetPtr&))
{
	if(!strSql.IsEmpty()){
		Cmd->CommandText = (_bstr_t)strSql;
		try{
			Grd.putref_DataSource(NULL);
			if(rs->State==adStateOpen) rs->Close();
			rs->Open(m_vNULL,m_vNULL,adOpenDynamic,adLockOptimistic,adCmdText);
			m_Flg = false;
			Grd.putref_DataSource((LPUNKNOWN)rs);

/*			m_CurCol = Grd.get_Col();
			if(m_CurCol==-1 || m_CurCol==EmpCol ){
				m_CurCol = DefCol;
			}
			m_iCurType = GetTypeCol(rs,m_CurCol);
			m_EditTBCh.SetTypeCol(m_iCurType);
*/
			pFGrd(Grd,rs);
		}
		catch(_com_error& e){
			Grd.putref_DataSource(NULL);
			AfxMessageBox(e.ErrorMessage());
		}
	}
}
Beispiel #4
0
///////////////////////////////////////////////
//
//返回当前记录集的游标位置
//
//IRecordset[in] 记录集智能指针
//
//函数成功返回当前记录集的游标位置,否则返回-1
//
long CFoxBase::RecNo(_RecordsetPtr IRecordset)
{
	long pos=0;
	long i;

	if(IRecordset==NULL)
		return -1;

	if(IRecordset->adoEOF && IRecordset->BOF)
		return -1;

	while(!IRecordset->GetBOF())
	{
		pos++;
		IRecordset->MovePrevious();
	}

	i=pos;

	i--;
	IRecordset->MoveFirst();

	while(i>0)
	{
		i--;
		IRecordset->MoveNext();
	}

	return pos;
}
Beispiel #5
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 #6
0
void CDlg::InitDataGrid1(CDatagrid1& Grd,_RecordsetPtr& rs)
{
    CColumns GrdClms;
    CString strCap,strRec;
    CString s;
    long num,numRec;
    short i;
    float wdth;

    strCap.LoadString(IDS_STRING9013);
    numRec = 0;

    GrdClms.AttachDispatch(Grd.get_Columns());
    if(rs->State==adStateOpen) {
        num = rs->GetadoFields()->GetCount();

        numRec = rs->GetRecordCount();
        strRec.Format(_T(" %i"),numRec);
        strCap +=strRec;
        Grd.put_Caption(strCap);
        for (i=0; i<num; i++) {
            switch(i) {
            case 0:
                GrdClms.GetItem((COleVariant) i).SetVisible(FALSE);
                break;
            case 1:
                wdth = 75;
                GrdClms.GetItem((COleVariant) i).SetWidth(wdth);
                break;
            case 2:
                wdth = 190;
                GrdClms.GetItem((COleVariant) i).SetWidth(wdth);
                break;
            case 3:
                wdth = 48;
                GrdClms.GetItem((COleVariant) i).SetWidth(wdth);
                break;
            case 4:
                wdth = 185;
                GrdClms.GetItem((COleVariant) i).SetWidth(wdth);
                break;
            case 5:
                wdth = 100;
                GrdClms.GetItem((COleVariant) i).SetWidth(wdth);
                break;
            default:
                GrdClms.GetItem((COleVariant) i).SetVisible(FALSE);
                break;
            }
        }
    }
    else {
        strRec.Format(_T(" %i"),numRec);
        strCap +=strRec;
        Grd.put_Caption(strCap);
    }

}
Beispiel #7
0
void HiDBOracle::create_rs(const char* name, const char* sql, _RecordsetPtr& rs)
{
	::CoInitialize(NULL);
	HRESULT hr = rs.CreateInstance(__uuidof(Recordset));
	if (FAILED(hr))
	{		
		_com_error e(hr);		
		on_excetion("HiDBOracle::ExecuteScalar", sql, e);
	}
	rs->PutCursorLocation(adUseClient);
}
Beispiel #8
0
int CCommDBOper::ADORecordsetOpen(_ConnectionPtr &pCon,_RecordsetPtr pRs,CString strOpenSql,CString strDcrOpen,int iWarn)
{
	//函数说明:执行指定记录集对象指定SQL操作
	//pCon 数据库连接对象
	//pRs  当前操作用记录集对象
	//strOpenSql  要执行的SQL命令
	//strDcrOpen是对要使用SQL命令的描述

	_variant_t tempStrSql;
	tempStrSql = strOpenSql;
	if (pRs == NULL)
	{
		pRs.CreateInstance(__uuidof(Recordset));
		pRs->CursorLocation = adUseClient;
	}

	ADOCloseRecordset(pRs,0);
	
	while (true)
	{
		try
		{
			//有错 pRs->Open(tempStrSql,_variant_t(pCon),adOpenDynamic,adLockOptimistic,adCmdText);
			pRs->Open(tempStrSql,(IDispatch *)pCon,adOpenDynamic,adLockOptimistic,adCmdText);
			break;
		}
		catch (_com_error &e)
		{
			CString strMsg;
			strMsg.Format("%s:%d %s", __FILE__, __LINE__, (LPSTR)e.Description());
			AfxMessageBox(strMsg);
		}
		try
		{	
			//如果第一次打开失败,看能否以只读方式打开
			pRs->Open(tempStrSql,(IDispatch *)pCon,adOpenDynamic,adLockReadOnly,adCmdText);
			return 2;
		}
		catch (_com_error &e)
		{
			CString strMsg;
			strMsg.Format("%s:%d %s", __FILE__, __LINE__, (LPSTR)e.Description());
			AfxMessageBox(strMsg);
			CString errormessage;
			errormessage.Format("功能说明: %s\r\n记录集对象执行下列SQL命令\r\n%s\r\n失败!  错误信息:%s",strDcrOpen,strOpenSql,e.ErrorMessage());
			WarnMessage(errormessage,iWarn);//显示错误信息
			return RET_FAILED;
		}
	}
	return RET_OK;
	
}
Beispiel #9
0
///////////////////////////////////////////////////////////
//
//替换记录集中选中字段所有的值
//
//IRecordset[in] 记录集智能指针
//FieldsName[in] 字段名
//Value[in]		 输入替换FieldsName字段的值
//
//函数成功返回TRUE,否则返回FALSE
//当函数成功返回时,当前游标指针指向记录集最后一个记录的后面
//
BOOL CFoxBase::ReplAll(_RecordsetPtr IRecordset, _variant_t FieldsName, _variant_t Value)
{
	if(IRecordset==NULL)
		return FALSE;

	IRecordset->MoveFirst();

	while(!IRecordset->adoEOF)
	{
		IRecordset->PutCollect(FieldsName,Value);
		IRecordset->Update();
		IRecordset->MoveNext();
	}
	return TRUE;
}
Beispiel #10
0
/////////////////////////////////////////////////////////////////////////////////////////
//
// 在记录集中当前游标位置设置指定的字段的值
//
// IRecordset[in]	记录集智能指针	
// FieldsName[in]	字段名
// Value[in]		新的值
//
// 如果有异常将调用ExceptionInfo函数
//
void CFoxBase::PutTbValue(_RecordsetPtr IRecordset, _variant_t FieldsName, double Value)
{
	if(IRecordset==NULL)
		return;

	try
	{
		IRecordset->PutCollect(FieldsName,_variant_t(Value));
		IRecordset->Update();
	}
	catch(_com_error /*&e*/)
	{
//		ExceptionInfo(e);
		throw;
	}
}
Beispiel #11
0
void tagGroupDesc::GroupsFromRecordset(CArray<tagGroupDesc*,tagGroupDesc*> &groups, _RecordsetPtr &rst)
{
	if (rst == NULL) return ;

	while (!rst->adoEOF)
	{
		tagGroupDesc * pGroup = NULL;
		FieldsPtr fields = rst->Fields;
		int nGroupId = fields->Item[L"GroupId"]->Value;

		INT_PTR i = 0;
		for (; i<groups.GetCount() && groups[i]->Id!=nGroupId; ++i);

		if (i != groups.GetCount())
		{
			pGroup = groups[i];
		}
		else
		{
			pGroup = new tagGroupDesc(nGroupId,fields); 
			groups.Add(pGroup);
		} 
		tagOpDesc op(fields); 
		if (op.IsValid())
		{
			op.Group = pGroup;
			pGroup->Ops.Add(op);
		}

		rst->MoveNext();
	}
}
Beispiel #12
0
_RecordsetPtr& GetRecordset(_bstr_t SQL)
{
	m_pRecordset=NULL;
	try{
		if(m_pConnection==NULL)
			//连接
			Connect();
		m_pRecordset.CreateInstance(__uuidof(Recordset));
		m_pRecordset->Open((_bstr_t)SQL, m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText);
	}
	catch(_com_error e){
		cout<<e.Description()<<endl;
        m_pRecordset=NULL;
        return m_pRecordset;
	}
	return m_pRecordset;
}
Beispiel #13
0
//断开连接
void ExitConnect(void)
{
	if(m_pRecordset!=NULL){
		m_pRecordset->Close();
		m_pConnection->Close();
	}
	::CoUninitialize();  //释放环境
}
Beispiel #14
0
   __int64 
   ADOConnection::_GetIdentityFromRS(_RecordsetPtr pRS) const
   {
      try
      {
         if (pRS->GetRecordCount() == 0)
            return 0;
         
         _variant_t    vaField;
         FieldsPtr      pFields;
         FieldPtr       pField;
         HRESULT			hr;

         hr = pRS->get_Fields( &pFields );
         vaField = "IDENT";
         pFields->get_Item( vaField, &pField );

         vaField.Clear();
         if (pField)
         {
            pField->get_Value(&vaField);

            switch (vaField.vt)
            {
            case VT_NULL:
               return 0;
            case VT_I4:
               return vaField.intVal;
            default:
               if (vaField.decVal.sign == DECIMAL_NEG)
                  return -vaField.cyVal.int64;
               else
                  return vaField.cyVal.int64;
            }
         }

         return 0;
      }
      catch (...)
      {
         ErrorManager::Instance()->ReportError(ErrorManager::High, 5030, "ADOConnection::_GetIdentityFromRS", "Error while determening @@IDENTITY");
      }

      return 0;
   }
Beispiel #15
0
//单位换算
//SourceUnits 被转换的单位
//UeUnits 转换后的单位
//返回单位换算因子
//dOffset 偏移值
double CAESARIIToPHS::UnitsToUeUnits(_RecordsetPtr rsData,CString SourceUnits,CString UeUnits,double &dOffset)
{
	double x;//单位换算因子
	CString strSQL;                                            
	_RecordsetPtr pRs;
	_ConnectionPtr pCon;
	pCon.CreateInstance(__uuidof(Connection));
	pRs.CreateInstance(__uuidof(Recordset));
	strSQL="select * from UnitsToUeUnits ";//删除了pfg20050629where Units='"+SourceUnits+"' and UeUnits='"+UeUnits+"'
	try
	{
		pCon=rsData->GetActiveConnection();
		pRs->Open(_variant_t(strSQL),(IDispatch*)pCon,adOpenStatic,adLockOptimistic,adCmdText);
		pRs->Filter=_variant_t("Units='"+SourceUnits+"' and UeUnits='"+UeUnits+"'");//pfg20050629
		if(pRs->GetRecordCount()>0)
		{
			x=vtof(pRs->GetCollect(_T("value")));
			dOffset=vtof(pRs->GetCollect(_T("offset")));//pfg20050701
			return x;
		}
		else if(pRs->GetRecordCount()==0)
		{
			//pfg20050629弹出增加单位转换关系对话框(statr)
			CUnitsTransformDlg dlg;
			pRs->Filter="";
			dlg.m_pRsUnits=pRs;
			dlg.m_strDestinationUnits=UeUnits;
			dlg.m_strSourceUnits=SourceUnits;
			if((dlg.DoModal())==IDOK)
			{
				pRs=dlg.m_pRsUnits;//pfg20050630
				pRs->Filter=_variant_t("Units='"+SourceUnits+"' and UeUnits='"+UeUnits+"'");//pfg20050629
				if(pRs->GetRecordCount()>0)
				{
					dOffset=vtof(pRs->GetCollect("Offset"));//pfg20050701
					x=vtof(pRs->GetCollect(_T("value")));
					return x;
				}
				else
					return 1.0;
			}
			else
			{
				m_IsCaesarError=TRUE;//增加了一个条件pfg20050627				
			}
			//pfg20050629弹出增加单位转换关系对话框(end)
		}
	}
	catch(_com_error &e)
	{
		if(AfxMessageBox("错误:当前单位不能转换,请更换单位后重试(仔细阅读使用说明)!",MB_YESNO)==IDYES)
		{
			m_IsCaesarError=TRUE;//增加了一个条件pfg20050627
		}
	}
	return 1.0;
}
Beispiel #16
0
DWORD CNHSQLServerDBO::OpenQuery(const _ConnectionPtr &pConnection, _RecordsetPtr &pRecordset, const wchar_t *const pwchSQL)
{
    assert(NULL != pConnection);
    assert(NULL != pwchSQL);

    DWORD dwReturn(0x00);

    try
    {
        pRecordset.CreateInstance(L"ADODB.Recordset");
        pRecordset->Open((_bstr_t)pwchSQL,
                         _variant_t((IDispatch*)pConnection, true),
                         adOpenStatic,
                         adLockOptimistic,
                         adCmdText);
    }
    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::OpenQuery发生错误(执行%s)。", pwchSQL);
        // 输出错误信息到输出窗口
        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 #17
0
///////////////////////////////////////////////////////////
//
//替换从记录集中选中字段指定条记录的值(相当于FOXPRO中 Replace Next)
//
//IRecordset[in]	记录集智能指针
//FieldsName[in]	字段名
//Value[in]			输入替换FieldsName字段的值
//num[in]			需替换的记录数
//
//函数成功返回TRUE,否则返回FALSE
//函数从当前游标位置开始替换
//当函数成功返回时,当前游标指针指向最后修改的记录集上
//当需替换的记录数超过最后一条记录时,游标指向最后一条记录的后面
//
BOOL CFoxBase::ReplNext(_RecordsetPtr IRecordset, _variant_t FieldsName, _variant_t Value, int num)
{
	if(IRecordset==NULL || num<=0)
		return FALSE;


	while(!IRecordset->adoEOF)
	{
		IRecordset->PutCollect(FieldsName,Value);
		IRecordset->Update();

		num--;
		if(num<=0)
			break;
		
		IRecordset->MoveNext();
	}
	return TRUE;
}
Beispiel #18
0
LRESULT  DBConnect::QuerySQL(LPCSTR bstrSQL, _RecordsetPtr& pRecordset, CursorTypeEnum cursorType, LockTypeEnum lockType)
{
	if (!m_bDBOpen||m_pAdoConn->GetState()!=ADODB::adStateOpen)
	{
		return -1;
	}

	try
	{
		pRecordset.CreateInstance(__uuidof(Recordset));
		pRecordset->Open((_bstr_t)bstrSQL, m_pAdoConn.GetInterfacePtr(), cursorType /*adOpenStatic*/ /*adOpenDynamic*/, lockType/*adLockOptimistic*/, adCmdText);
	}
	catch(_com_error e)
	{
		MessageBox(NULL,e.Description(),_T("提示") ,1);
		throw e;
	}
	return 0;
}
Beispiel #19
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 #20
0
int RxADO::GetRecordCount(_RecordsetPtr pRst)
{
	int nCount=0;
	try{
		pRst->MoveFirst();
	}
	catch(...)
	{
		return 0;
	}
	if(pRst->_EOF)
		return 0;
	while (!pRst->_EOF)
	{
		pRst->MoveNext();
		nCount=nCount+1;	
	}
	pRst->MoveFirst();
	return nCount;
}
Beispiel #21
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;
}
Beispiel #22
0
void ADOConn::ExitConnect(void)
{
//关闭记录集和连接
if (m_pRecordset!=NULL)
{
m_pRecordset->Close();
 
}
m_pConnection->Close();
::CoUninitialize();
}
//Get record of database
bool DataConnection::GetRecordSet(_RecordsetPtr &m_pRecordset , _bstr_t bstrSQL)
//第一个参数是引用类型,也就是传出参数,可看做函数的返回值,第二个参数是SQL语句,是输入。
{
	try
	{	
		if(m_pConnection==NULL) //初始化连接
			OnInitADOConn();
		
		m_pRecordset.CreateInstance(__uuidof(Recordset));
		m_pConnection->CursorLocation = adUseClient;
		
		m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
		return true;
	}
	
	catch(_com_error e) //失败
	{		
		MessageBox(NULL,e.Description(),"提示",MB_ICONINFORMATION | MB_OK);
		return false;
	}
}
Beispiel #24
0
// 打开记录集
_RecordsetPtr& ADOConn::GetRecordSet(_bstr_t bstrSQL)
{
//TODO: insert return statement here
try
{
if (m_pConnection==NULL)
{
OnInitADOConn();
}
//创建记录对象
m_pRecordset.CreateInstance(__uuidof(Recordset));
//取得表中记录
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,
adLockOptimistic,adCmdText);
}
catch (_com_error e)
{
e.Description();
}
return m_pRecordset;
}
Beispiel #25
0
BOOL CADOUtil::CheckRecordSetState(_RecordsetPtr RecSet)
{
	if (RecSet != NULL && (RecSet->EndOfFile == VARIANT_FALSE))
	{	
		if (RecSet->EndOfFile == VARIANT_FALSE)
		{
			RecSet->MoveFirst();
			return TRUE;
		}
	}
	return FALSE;
}
Beispiel #26
0
DWORD CADODatabase::GetRecordCount(_RecordsetPtr m_pRs)
{
	DWORD numRows = 0;
	
	numRows = m_pRs->GetRecordCount();

	if(numRows == -1)
	{
		if(m_pRs->EndOfFile != VARIANT_TRUE)
			m_pRs->MoveFirst();

		while(m_pRs->EndOfFile != VARIANT_TRUE)
		{
			numRows++;
			m_pRs->MoveNext();
		}
		if(numRows > 0)
			m_pRs->MoveFirst();
	}
	return numRows;
}
Beispiel #27
0
//替换指定范围的某字段的值.
bool CFoxBase::ReplaceAreaValue(_RecordsetPtr pRs, CString strField, CString strValue, int startRow, int endRow)
{
	if(startRow > endRow)
	{
		endRow = startRow;
	}
	if( endRow <= 0 )
	{
		return false;
	}
	if( endRow > pRs->GetRecordCount() )
	{
		return false;
	}
	if( pRs->GetRecordCount() <= 0 )
	{
		return false;
	}
	pRs->MoveFirst();
	for(int i=1; i<=endRow && !pRs->adoEOF; i++, pRs->MoveNext())
	{
		if( i >= startRow )
		{
			pRs->PutCollect(_variant_t(strField), _variant_t(strValue));
			pRs->Update();
		}
	}
	return true;
}
Beispiel #28
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 #29
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 #30
0
//读Buffer
bool CRsDupRgn::LoadBufferField(CBaseDBEntity *pGoods, const char* szFiledName, _RecordsetPtr &rs)
{
	if(pGoods == NULL)	return false;

	try
	{
		if(rs->GetadoEOF())
		{
			ReleaseRs(rs);
			return false;
		}

		long lSize=0;
		FieldsPtr fldPtr = rs->GetFields();
		FieldPtr itemPtr = fldPtr->GetItem(szFiledName);
		lSize = itemPtr->ActualSize;

		if(lSize > 0)
		{
			_variant_t varBLOB;
			varBLOB = itemPtr->GetChunk(lSize);

			BYTE *pBuf=NULL;
			SafeArrayAccessData(varBLOB.parray,(void**)&pBuf);
			SafeArrayUnaccessData(varBLOB.parray);

			// 清空SKILL
			CEntityProperty* ep = pGoods->GetDataEntityManager().GetEntityProperty(string(szFiledName));
			if(ep)
				ep->SetBufAttr(0, pBuf, lSize);
		}
	}
	catch(_com_error e)
	{
		PrintErr(CStringReading::LoadString(IDS_DBS_RSDUPRGN,STR_DBS_DUPRGN_LOADRGNOBJERR), e);
		return false;
	}
	return true;
}