本文整理汇总了C++中_RecordsetPtr::MoveLast方法的典型用法代码示例。如果您正苦于以下问题:C++ _RecordsetPtr::MoveLast方法的具体用法?C++ _RecordsetPtr::MoveLast怎么用?C++ _RecordsetPtr::MoveLast使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类_RecordsetPtr
的用法示例。
在下文中一共展示了_RecordsetPtr::MoveLast方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: CopyData
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;
}
示例2: InsertNew
/////////////////////////////////////////////////////
//
// 在记录集的当前位置插入一条新记录
//
// 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++)
//.........这里部分代码省略.........