我要访问数据库里的数据,通过odbc访问access,我用了movefirst函数,但是不能定位到第一条记录,而是第十条,id是自动编号,1-110,但是访问到84条以后,就开始访问1-10条,然后是以后的数据,我是用判断是否到最后一条记录来实现循环的。并且在调用getrecordcount函数是返回值是1,而不是数据库的记录条数!应该怎么样才能实现数据库的顺序访问?从第一条到最后一条逐条访问?请高手回答!!!!在线等待!!

解决方案 »

  1.   

    这是因为你的select语句返回的数据是按照原始顺序排列的。也就是说move first之后,cursor处于原始顺序的第一个。所以你在select的时候需要对它进行排序:
    select * from XXXX order by id
    这样,就能按照ID排序,然后 movefirst,这样肯定能够定位到正确的记录。recordcount这个问题,可能有其它的原因============================================================================
    提问题时标题要简明扼要地说明问题内容,切忌使用"急","求救"之类不能说明问题的标题
    http://alphasun.betajin.com/                            给我发信息请附带原帖地址
    http://www.betajin.com/alphasun/index.htm
    DocWizard C++程序文档自动生成工具 | Wave OpenGL | HttpProxy | AjaxParser词法分析
      

  2.   

    第一个问题如楼上所说,打开时你没有排序,打开表时使用ORDER BY,因为你使用的是ACCESS,所以也可以在表中直接设计为排序。
    打开表后直接使用GetRecordCount(),返回为0(有记录)或1(无记录),只有将表中的记录滤一遍后,才能得到真正的记录数
    pRecordSet->MoveFirst();
    While(pRecordSet->IsEof() == 0)
    {
         pRecordSet->MoveNext();
    }pRecordSet->GetRecordCount();    //得到真正的记录数