为了避免datagrid 的空行也参与计算,保存的代码这样写:
 If Not rst.BOF Then
    rst.MoveFirst
    Do While Not rst.EOF
        If dgdData.Columns(0).Text = "" Then
            Exit Do
        Else
           rst!序号 = Number
           rst.MoveNext
        End If
    Loop
End IfNo=rst.RecordCount这段代码运行后rst.RecordCount的值总是把空行也算进去,但是数据库显示的记录数却是正常过的。
问题出在哪里?

解决方案 »

  1.   

    rst.RecordCount 是根据查询语句得来的,你这里折腾的没用
    加个过滤的条件就可以了
    rst.filter="字段1<>''"
      

  2.   

    单步调试一下,看
    If dgdData.Columns(0).Text = "" Then 
    是否有效。
      

  3.   

    因为只新增而没有输入或负责的记录(即空行),是不会更新数据库的。
    如1楼所言,设置 Filter 即可。
      

  4.   

    rst.filter="字段1 <>''" 
    把这个改为:rst.filter="次数 <>''" 加在最上面If Not rst.BOF Then 上,还是不对。
      

  5.   

    你的程序是想得到什么? rst又是怎么来的? 怎么不对?报什么错?
      

  6.   

    加在 End If 之后。
      

  7.   

    程序希望实现datagrid里所有数据不为空的行数,但是用户会按回车自动多产生一个空行,而这个空行也计入到rst.recordcount,现在就想把这个空行不计入到recordcount里。rst就是这个datagrid的datasource.
    rst.ActiveConnection = connme
    rst.filter="次数 <>''"
     If Not rst.BOF Then
        rst.MoveFirst
        Do While Not rst.EOF
            If dgdData.Columns(0).Text = "" Then
                Exit Do
            Else
               rst!序号 = Number
               rst.MoveNext
            End If
        Loop
    End If
    rst.UpdateBatch
    grpNo = rst.RecordCount
    这段代码执行后,我输入7条有数据记录和1个空行,rst.RecordCount还是显示7
      

  8.   

    rst.Open "select * from 表名 where 字段名<>" & Chr(39) & "" & Chr(39)
    msgbox rst.recordcount
      

  9.   

    不好意思,我写错了,rst.RecordCount还是显示 8,我希望要的是 7
      

  10.   

    这样也不对,单步跟踪rst.recordcount,如果是7条记录1个空行,recordcount还是 8
      

  11.   

    加上这句话后,运行msgbox rst.recordcount提示对象变量未设置,但是却保证了空行不参与计算,结果是我想要的。
      

  12.   

    rst.Open "select * from 表名 where rs.fields(0) <>" & Chr(39) & "" & Chr(39) 你是怎么写的?
      

  13.   

    rst.Open "select * from 表名 where rst.fields(0) <>" & Chr(39) & "" & Chr(39) 你是怎么写的?
      

  14.   

     If Not rstMyRecordset_Data.BOF Then
        rstMyRecordset_Data.MoveFirst
        Do While Not rstMyRecordset_Data.EOF
            If dgdData.Columns(0).Text = "" Then
                Exit Do
            Else
               rstMyRecordset_Data!试验序号 = strMyTestNumber
               rstMyRecordset_Data.MoveNext
               grpNo = grpNo + 1
            End If
        Loop
    End If    rstMyRecordset_Data.ActiveConnection = connme
        rstMyRecordset_Data.UpdateBatch
        rstMyRecordset_Data.ActiveConnection = Nothing
    dim rst as new ADODB.Recordset
    rst.Open "select * from 表名 where 试验序号='" & strmytestnumber &"' and 次数 <>" & Chr(39) & "" ,connme
    msgbox rst.recordcount
    rst.close
    在msgbox rst.recordcount这句加个断点,就提示对象变量未设置。
      

  15.   

    & Chr(39) & "" & Chr(39) 你看看你的
      

  16.   

    在grpNo = rst.RecordCount 这句前面加
    rst.filter="次数 <>''" 
    rst.requery
      

  17.   

    rst.open "select * from 表名 where 试验序号='" & strmytestnumber & "' and 次数 <> " & Chr(39) & "" & Chr(39), connme, adOpenKeyset, adLockPessimistic
      

  18.   

    你自己再看看
    rst.Open "select * from 表名 where 试验序号='" & strmytestnumber &"' and 次数 <>" & Chr(39) & "" ,connme 你最后面的那个逗点 你打的是什么逗点 ? 半型全型也不注意
      

  19.   

    半角,英文状态,书写应该没问题,程序自动有提示。
    你的Chr(39)是什么意思,按你的写法,记录集打不开。“对象关闭时不允许操作”
      

  20.   

    chr(39)就是单引号 使用这个就是避免一堆的符号会看走眼或输入错误.rst.Open "select * from 表名 where 试验序号='" & strmytestnumber &"' and 次数 <>" & Chr(39) & "" ,connme 你这行的 逗号 没有问题吗? 我服了你