【问题标题】:Using access vba to check if table column has null values使用access vba检查表列是否有空值
【发布时间】:2014-05-07 16:04:36
【问题描述】:

我正在尝试查找指定的列是否包含空值或没有数据。如果列中存在空值,则将消息框提供给用户说列包含空值。 我的 vba

Dim sqlid As String
Dim rst As Recordset
Dim cdb As Database

Set cdb = CurrentDb
SQLEID = "SELECT * " & _
   "FROM table_1 ;"
'
  Set rst = cdb.OpenRecordset(sqlid , dbOpenSnapshot)
   Do While Not rst.EOF
   If IsNull(rst.Fields("column1").Value) Then
   MsgBox "Has nulls"
   End If

   Loop   

    rst.Close
    Set rst = Nothing
    Set cdb = Nothing

但是当我运行它时,我的访问没有响应。如何使用 vba 检查列是否有任何空值

【问题讨论】:

  • 为什么不SQLEID = "SELECT sum(1) FROM [table_1] WHERE IsNull([column1])" 并检查它返回的内容?甚至更短:If DCount(1, "table_1", "IsNull([column1])")>0 Then。还要检查拼写:SQLEID = "SELECT..."cdb.OpenRecordset(sqlid ..) 并添加Option Explicit
  • 您指定的查询 ** "SELECT sum(1) FROM [table_1] WHERE IsNull([column1])"** 返回 68。表示在集合中找不到项目
  • 如果它返回 68,这意味着您有 68 条空值记录。现在有什么问题?
  • 我使用了 If DCount,它运行良好。谢谢

标签: ms-access vba ms-access-2010


【解决方案1】:

它挂起,因为您的记录集没有增加,您需要一个 MoveNext

Do While Not rst.EOF
   If IsNull(rst.Fields("column1").Value) Then
   MsgBox "Has nulls"
   End If
   rst.MoveNext
Loop 

Simoco 有更好的建议来实现这一点,

If DCount(1, "table_1", "IsNull([column1])")>0 Then
MsgBox "Has nulls"
End If

【讨论】:

    猜你喜欢
    • 2014-04-14
    • 1970-01-01
    • 2010-09-07
    • 2014-02-09
    • 1970-01-01
    • 2017-06-11
    • 2012-07-24
    • 2011-03-20
    • 1970-01-01
    相关资源
    最近更新 更多