如题,重新编译也没有用,该怎么处理啊,望高手指点

解决方案 »

  1.   

    本帖最后由 zyq5945 于 2010-07-14 00:06:19 编辑
      

  2.   

    就是说打开的记录集没有记录的话你直接MoveFirst是错误的,要先判断是否有记录了才能MoveFirst
    try
    {
    if(!m_pRecordset->BOF)
    m_pRecordset->MoveFirst();
    else
    {
    AfxMessageBox("表内数据为空");
    return;
    }
    while(!m_pRecordset->adoEOF)
    {
                            // 遍历记录
    m_pRecordset->MoveNext();
    }
    }
    catch(_com_error& e)
    {
    //容错处理
    }
      

  3.   

    这有一个ADO操作ACCESS的例子
    http://blog.csdn.net/xianglitian/archive/2010/05/22/5617173.aspx
      

  4.   

    可能:
    1,打开的结果集为空,一般是sql语句有问题或者没有符合条件的记录,此时可以查看RecordCount()值,如果是这种情况,RecordCount()值为0;
    2,结果集有记录,但你的循环语句没有结束条件,MoveLast()的值为true;
    3,结果集被删除为空,MoveFirst()的值为true;不管是那种情况,都是代码考虑不周导致的,仔细检查一下recordset相关的代码,尽量保证逻辑的严密性并测试记录集的边界;
      

  5.   

    只定义了一个记录集和连接指针,想要打开STATIONINFO和BATTERYINFO两张表,如果交替使用这些 记录集和连接变量来打开这两个表则可能会导致读取
    记录时指针紊乱,p_Recordset->MoveNext()将指针移到了有效记录集后面即(adEOF处)返回TRUE,包如上的出错信息。解决办法是为每张表定义记录集和连接指针。譬如要打开2张表就定义2个记录集和2个连接指针。