如何知道ADO记录集的当前行是第几行

解决方案 »

  1.   

    你的记录集是用adodc控件来表示还是说用RecordSet来表示?
      

  2.   

       我是个新手,我都快没分了。哈哈,逮到个相对简单的问题蹭点分数先。谢谢这位朋友。哈哈。
        一般数据库中我们都设置有ID字段,那个ID字段是每新增一个记录就自动+1,那都是设为主键,自然是不重复的索引,所以那个ID是唯一标识的。一般我们要引用哪个记录做操作,有这个ID作为搜索就能满足要求了。
        当然如果你的需要很另类,你需要的是绝对行号,就如Excel表格中那样一行一行的,你要获得那个行号。那么用我上句说的方法去直接读取那条记录的ID字段的话就不对了,因为用户总有对数据库做删除操作过的啊,那么那个ID字段的数据就要断号的情况了。这样也简单,你先对数据库做了查询后(一般我们都是要作排序查询的),然后代码如下:Dim Rs1 As New ADODB.Recordset
    Dim i As Integer  '声明为长整型
      If Rs1.State <> adStateClosed Then Rs1.Close  '如果Rs1不是关闭的,那么就关闭它。
      Rs1.Open sql, Cnn, adOpenKeyset, adLockReadOnly  '打开键集类型游标,只读
      If Rs1.RecordCount > 0 Then  'RecordCount 属性(ADO):指示 Recordset 对象中记录的当前数目。返回长整型值。
        Rs1.MoveFirst  '到第1条记录
        Do While Rs1.EOF = False  '循环语句
          i=i+1 '哈哈,这个i就是要求的行号了,开始是0,第1遍循环时(即Rs1中第1条记录)是1,第遍是2…这样i就是Rs1中的绝对行号了。
           if Rs1.Fields("字段名")="某值" then Label1=i  '条件判断你需要的那条记录,那么返回那条记录的行号i。哈哈搞定。
        Loop
      End If   兄弟,我说的够详细了的吧,哈哈,给分吧。咱穷哥们的水平也有限,别人热心的帮助我,我有机会也当会老师,哈哈,过瘾。
      

  3.   

    RecordSet对象有个属性AbsolutePosition,使用rs.AbsolutePosition就能知道记录集的当前行是第几行了
      

  4.   

    补充一下:
        Do While Rs1.EOF = False  '循环语句 
          i=i+1 '哈哈,这个i就是要求的行号了,开始是0,第1遍循环时(即Rs1中第1条记录)是1,第遍是2…这样i就是Rs1中的绝对行号了。 
          if Rs1.Fields("字段名")="某值" then 
            Label1=i  '条件判断你需要的那条记录,那么返回那条记录的行号i。哈哈搞定。 
             Exit Do  '退出循环语句。既然获得这个记录的行号值了那么就终止循环语句吧,以免浪费系统资源。
          end if
        Loop 
      

  5.   

    rs.movenext              将记录指针从当前的位置向下移一行
    rs.moveprevious          将记录指针从当前的位置向上移一行
    rs.movefirst             将记录指针移到数据表第一行
    rs.movelast              将记录指针移到数据表最后一行
    rs.absoluteposition=N    将记录指针移到数据表第N行
    rs.absolutepage=N        将记录指针移到第N页的第一行
    rs.pagesize=N            设置每页为N条记录
    rs.pagecount             根据 pagesize 的设置返回总页数
    rs.recordcount           返回记录总数
    rs.bof                   返回记录指针是否超出数据表首端,true表示是,false为否
    rs.eof                   返回记录指针是否超出数据表末端,true表示是,false为否
    rs.delete                删除当前记录,但记录指针不会向下移动
    rs.addnew                添加记录到数据表末端
    rs.update                更新数据表记录