コード例 #1
0
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;

}
コード例 #2
0
ファイル: FoxBase.cpp プロジェクト: uesoft/AutoIPED
///////////////////////////////////////////////
//
//返回当前记录集的游标位置
//
//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;
}
コード例 #3
0
ファイル: FoxBase.cpp プロジェクト: uesoft/AutoIPED
//替换指定范围的某字段的值.
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;
}
コード例 #4
0
ファイル: RxADO.cpp プロジェクト: ice98/mycode_bak
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;
}
コード例 #5
0
ファイル: ADOUtil.cpp プロジェクト: 0anion0/IBN
BOOL CADOUtil::CheckRecordSetState(_RecordsetPtr RecSet)
{
	if (RecSet != NULL && (RecSet->EndOfFile == VARIANT_FALSE))
	{	
		if (RecSet->EndOfFile == VARIANT_FALSE)
		{
			RecSet->MoveFirst();
			return TRUE;
		}
	}
	return FALSE;
}
コード例 #6
0
ファイル: ado2.cpp プロジェクト: zxlooong/minica
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;
}
コード例 #7
0
ファイル: CAESARIIToPHS.cpp プロジェクト: uesoft/AutoPHS
//吊架和支架数据的导入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);
	}
}
コード例 #8
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("记录为空");
	}
}
コード例 #9
0
ファイル: FoxBase.cpp プロジェクト: uesoft/AutoIPED
///////////////////////////////////////////////////////////
//
//替换记录集中选中字段所有的值
//
//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;
}
コード例 #10
0
ファイル: V5.cpp プロジェクト: gdc-sure/PMS
BOOL CV5App::GetData(CString sql, _RecordsetPtr &Rs)
{
	try{
	Rs=m_pConnection->Execute((_bstr_t)sql,NULL,-1);
	if(Rs->RecordCount>0){
		Rs->MoveFirst();
		return TRUE;
	}else{
		return FALSE;
	}
	}catch(_com_error &er)
	{
		MessageBox(NULL,er.ErrorMessage(),_T("系统提示"),MB_OK);
		return FALSE;
	}
}
コード例 #11
0
ファイル: FoxBase.cpp プロジェクト: uesoft/AutoIPED
////////////////////////////////////////////////////
//
//从表的第一条记录开始寻找指定的逻辑关系
//
//IRecordset[in] 记录集智能指针
//FieldsName[in] 字段名
//Relations[in]  逻辑关系,等于、不等于……
//Value[in]		 输入与FieldsName比较的值
//
//函数成功返回TRUE,否则返回FALSE
//如果需比较的字段与关系不匹配会抛出_com_error异常
//指针指向找到的记录上
//
BOOL CFoxBase::LocateFor(_RecordsetPtr IRecordset, _variant_t FieldsName, 
						 int Relations, _variant_t Value)
{
	_variant_t tempvalue;
	CString tempstr;

	if(IRecordset==NULL || Value.vt==VT_NULL)
		return FALSE;
	
	try
	{
		IRecordset->MoveFirst();
	}
	catch(_com_error &e)
	{
		ExceptionInfo(e);
		return FALSE;
	}

	return LocateForCurrent(IRecordset,FieldsName,Relations,Value);

}
コード例 #12
0
ファイル: FoxBase.cpp プロジェクト: uesoft/AutoIPED
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;
}