用的是VC6.0
用ADO 访问数据库(ACCESS2000),显示数据库用的是DataGrid.
现在我的问题是,在我想遍历数据库的时候
try
{
   while(!m_pRecordset->adoEOF)//判断是否到了记录集得最后一行
   {
        m_pRecordset->MoveNext();
    }}
catch(_com_error *e)
{
     AfxMessageBox(e->ErrorMessage());
}
m_pRecordset->adoEOF此句一直为假,就算已经到记录集的最后一行也依然为假,所以程序执行到
这个时m_pRecordset->MoveNext();会有异常,我不知道为什么,

解决方案 »

  1.   

    奇怪了哦,遍历前加个试试
    if(m_pRecordset->GetRecordCount() != 0)
           m_pRecordset->MoveFirst();
      

  2.   

    laiyiling(※陌生人·坚持理想※) 
    不行,这样子依然不行,有没有其他的办法来判断到没有到记录集的最后一行阿
      

  3.   

    我就是对数据库的读,写没有其他得什么操作了。
    我试过了如果数据库是空的话,m_pRecordset->adoEOF和m_pRecordset->BOF都为真,也只有在数据库为空的情况下他们才为真,其他的时候都为假
      

  4.   

    如果读写数据库时,其中一个数据表到达末尾,而根据其它数据表判断 !m_pRecordset->adoEOF 是否需要停止,就会出现读过界的情况
    最好每个数据表都做判断,或者先获取数据表长度,然后直接限定movenext()的次数
      

  5.   

    奇怪,实在不行就先getrecordcount,然后设一变量currec记录当前位置,当currec==getrecordcount()时,就是最后一条
      

  6.   

    遍历前加个试试m_pRecordset->MoveFirst();