调用MoveNext出现S1010:函数序列错误,怎么解决?

xiaofen605 2003-10-30 10:11:40
在调用MoveNext出现S1010:函数序列错误。但我看不出在调用时有什么错,这个错误是由什么引起的,请各位指教,非常感谢!

请看下面:
A。程序说明:
1。COutcallSet是一个CRecordset类。
2。OpenRecordSet:为自定义打开记录集函数,成功返回0
GetNextRecordInfo:为自定义读出下一个符合条件的记录函数,成功返回1
3。调用次序为:
先用OpenRecordSet打开记录集,如记录集已经打开,直接返回0;
再调用GetNextRecordInfo读取记录。
4。出现的问题是:
在GetNextRecordInfo中用MoveNext读下一记录时,第一次是成功的,第
二次就返回S1010:函数序列错误。
5。数据库始终打开着。

B。程序片段:
1、OpenRecordSet:打开记录集
short COutcallSet::OpenRecordSet(int& Devicetype)
{
char strSqlCmd[201];
short nResult ;
nResult = 0;

sprintf( strSqlCmd, "select * from user_task_record where T ASKSTATION!=198 and TASKSTATION!=197 and TRY_TIMES >0 and
ucDevicetype=%d",Devicetype);
TRY
{
if( IsOpen( ) )
{
return 0 ;
}
if( Open( CRecordset::snapshot, strSqlCmd,
CRecordset::none ))
{
if( IsBOF( ))
{
}
else
{
MovePrev( );
}
nResult = 0;
}
else
{
nResult = 1;
}
}
CATCH_ALL( e )
{ //第二次在此接收到S1010的错误
TRACE("\nOpen faile , database close");
pMainFrm ->m_DBOpenFlag = false;
e->GetErrorMessage(strSqlCmd,200);
AfxMessageBox(strSqlCmd);
e->Delete();
nResult = -2;
}
END_CATCH_ALL ;
return nResult;
}

2。GetNextRecordInfo:读出下一个符合条件的记录
short COutcallSet::GetNextRecordInfo( )
{
char strSqlCmd[201];
......

while( 1)
{
if( IsEOF( ))
{
return 0;
}

TRY
{
MoveNext( );
}
CATCH_ALL( e )
{
TRACE("\nOpen failed , database close");
pMainFrm ->m_DBOpenFlag = false;
e->GetErrorMessage(strSqlCmd,200);
e->Delete();
AfxMessageBox(strSqlCmd);
return -2;
}
END_CATCH_ALL

if( IsEOF( ))
{
continue ;
}
.......

}
return 1;
}
...全文
91 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
klbt 2003-11-12
  • 打赏
  • 举报
回复
超长的问题,帮你顶。

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧