对于记录集对象属性设置为:
Set m_Rs = New ADODB.Recordset
m_Rs.CursorLocation = adUseClient
m_Rs.CursorType = adOpenStatic
....
查询后我想获得记录总数,执行m_Rs.MoveLast却提示“行集不支持反向提取”,郁闷,请大家指教。
如果想判断是否有记录返回,我该如何做了?这样可以吗:
If Not m_Rs.EOF Then
   nCord = m_Rs.RecordCount
ELSEENDIF

解决方案 »

  1.   

    是游标问题,你改为adOpenDynamic试试
      

  2.   

    是游标问题,你改为adOpenDynamic试试
    ==================================
    m_Rs.CursorType = adOpenDynamic,还是提示“行集不支持反向提取”,郁闷
      

  3.   

    参考这段代码,再加个, adLockOptimisticadodb连接Dim pubConn As New ADODB.Connection
        Dim rsTable As New ADODB.Recordset
        strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\eastport\data\system.mdb;Persist Security Info=False;Jet OLEDB:Database Password="
        pubConn.Open strConn
        rsTable.CursorLocation = adUseClient
        strSQL = "select top 10 * from dw"
        rsTable.Open strSQL, pubConn, adOpenDynamic, adLockOptimistic
      

  4.   

    AdOpenStatic就可以用RECORDCOUNT属性了。
      

  5.   


    我要达到目的:将VFP的数据表(x.DBF)的记录导入x.MDB数据库
    限制条件:由于x.DBF内的某些记录含有Null值(这些记录我不需要),故导出纪录到m_Rs(=m_Con.Execute(cSql)),然后借助m_Rs对象遍历纪录(For I=1 to m_Rs. RecordCount)来剔除包含Null的纪录。
    连接VFP操作为:
     strConnect = "Provider=VFPOLEDB.1;SourceType=DBF;Data Source=" & cDbfPath
     Cn.ConnectionString = strConnect '指定连接字符串
     Cn.Open '连接数据库
    ‘获得查询纪录操作为:
    Set m_Rs = New ADODB.Recordset
    m_Rs.CursorLocation = adUseClient
    m_Rs.CursorType = adOpenStatic
    Set  m_Rs=m_Con.Execute(cSql)  ‘查询语句书写正确m_Rs.MoveLast   ’记录指针移到最后记录时出错“行集不支持反向提取”,程序到此为止 
    nCord = m_Rs.RecordCount ‘获得记录总数
    有一个奇怪现象:我想知道是否有记录返回,作了一个对比试验:
    试验1:
    Set  m_Rs=m_Con.Execute(cSql)  ‘查询语句书写正确,注意我省略m_Rs.MoveLast语句
    nCord = m_Rs.RecordCount ‘获得记录总数=-1(表明没有纪录返回)实验2:
    将Set  m_Rs=m_Con.Execute(cSql)改为
    Set VSGrid.DataSource = m_Con.Execute(cSql)  ’ VSGrid为表格控件,有记录返回显示问:执行m_Con.Execute(cSql)语句应该有纪录返回,可是试验1的结果:m_Rs.RecordCount=-1,这是咋回事?盼望高手解答。