行句柄引用了一个已被删除的行或被标识为删除的行
「已注销」 2010-11-10 03:47:41 主要代码如下
strSQL = "select VCS_BERTH.BERTH_NAME,VCS_BERTH.BERTH_WORKSHOPCODE,VCS_ATENNA.ATENNA_CURRENTTAG_TIME_ENTRANCE,VCS_ATENNA.ATENNA_LASTTAG_TIME_EXIT,VCS_BERTH.BERTH_NEXTVEHICLE,VCS_VEHC.VEHICLE_CODE as CUVEH,VCS_VEHL.VEHICLE_CODE as LASTVEH from VCS_BERTH left outer join VCS_ATENNA on VCS_ATENNA.ATENNA_CODE = VCS_BERTH.BERTH_ANTENNA left outer join VCS_VEHICLE as VCS_VEHC on VCS_VEHC.VEHICLE_TAGCODE = VCS_ATENNA.ATENNA_CURRENTTAG_CODE left outer join VCS_VEHICLE as VCS_VEHL on VCS_VEHL.VEHICLE_TAGCODE =VCS_ATENNA.ATENNA_LASTTAG_CODE order by VCS_BERTH.BERTH_WORKSHOPCODE";
m_Recordset->Open(strSQL.AllocSysString(), _variant_t((IDispatch *)plistview->m_Connection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ( plistview->m_Recordset->GetRecordCount())//获得记录总数,如果记录数不为0,则执行
{
plistview->m_Recordset->MoveFirst();//指向第一条记录
while(!plistview->m_Recordset->adoEOF) //如果不是最后一条记录
{
......
m_Recordset->MoveNext();//指向下一条记录
}
}
其中SQL语句在数据库的查询分析器中执行成功,但是在在程序中运行到m_Recordset->MoveNext()时,就会出现错误:行句柄引用了一个已被删除的行或被标识为删除的行。而且如果把sql语句改成一条简单的查询语句如:select * from VCS_USER,那么程序也没有问题,可以很好的运行,但是这个复杂的sql语句在查询分析器中是正确的啊,不知道什么原因,望大家不吝赐教,谢谢!!!!