rs.Open "select [Update Flag ] from [TimeRestrictionUpdate] where [Door MAC Address]='" + MAC + "'", cnn, adOpenDynamic, adLockBatchOptimisticrs.MoveFirst
Do While Not rs.EOF()   N = N + 1
   rs.MoveNext
   
Loop我想知道数据库中有多少条记录,当有数据时正常,可当表中没有一条记录时,会成一个死循环?该怎么改这段代码?

解决方案 »

  1.   

    直接用rs.recordcout就是记录的个数了
      

  2.   

    直接用rs.recordcout返回值为什么为-1?
      

  3.   

    不用movefirst ,记录集默认打开时若有数据就是第一条
    Do Until rs.EOF()
         ...
    Loop
    或不用上面的笨办法,直接用以下静态游标打开判断
    "Select * From Table", cnn, adOpenStatic ,adLockOptimistic 
    rs.recordcount即为数据条数
    也可用
    "Select Count(*) From Table", cnn, adOpenDynamic,adLockOptimistic 
    返回的数也是记录条数。
      

  4.   

    没有数据的话运行这条语句(rs.MoveNext)会报错呀?这条语句(rs.MoveFirst)也不能运行吧?
      

  5.   

    先"Select Count(*) From Table", cnn, adOpenDynamic,adLockOptimistic“
    判断记录数,如果大于0,则rs.MoveFirst
    接着做循环 do while not rs.eof即:"Select Count(*) From Table", cnn, adOpenDynamic,adLockOptimistic“
    if 记录数>0 then
       rs.MoveFirst
           do while not rs.eof
           ……
           loop
    end if
      

  6.   

    即:"Select Count(*) From Table", cnn, adOpenDynamic,adLockOptimistic“
    if 记录数>0 then
       rs.MoveFirst
           do while not rs.eof
           ……
           rs.MoveNext
           loop
    end if
      

  7.   

    可当表中没有一条记录时,rs.EOF=True,判断条件不成立,根本进不了循环,更不会成死循环实际上在rs.MoveFirst时会报错。可以加一个判断(没有一条记录时,不指向任何记录,既是文件头bof也是文件尾eof):
    if not (rs.eof and rs.bof) then
     rs.MoveFirst
     Do While Not rs.EOF()    N = N + 1
        rs.MoveNext
       
     Loop
    end if
      

  8.   

    直接用rs.recordcout就是记录的个数了
      

  9.   

    不能判断recordcout动态游标不返回记录集数
    标准写法
    if not rs.eof and not rst.bof then
     rs.MoveFirst
     Do While Not rs.EOF()   N = N + 1
       rs.MoveNext
       
     Loop
    else
     msgbox "没有记录"
    end if
      

  10.   

    rs.eof=true and rs.bof=true 时,表示rs里没记录
      

  11.   

    在前面加一个判断语句,如果字段为空则不做循环
    if  rs.eof = true then
      exit sub
    else
    ……
      

  12.   

    if  rs.eof and rs.bof then msgbox "当前表或者查询中无记录!":exit sub