【发布时间】:2017-07-20 12:32:50
【问题描述】:
我正在尝试在以下代码中查找第一个空值。我可以在选择中使用 where 但它会删除非空值。我想保留整个记录集,以便我可以使用 rs.AbsolutePosition 向用户报告哪一行为空。我基本上已经将它设置为将用户在临时表中输入的信息与另一个表进行比较。如果匹配的字符串在那里,它就会出现,否则在记录集上应该为空。
strSQL = "SELECT Tbl_Temp.ID, Tbl_List.String FROM Tbl_Temp LEFT JOIN Tbl_List ON Tbl_Temp.string = Tbl_List.string"
Set rs = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
strIsN = "IsNull(string)"
rs.FindFirst strIsN
If rs.NoMatch Then
MsgBox "no null values"
Do While Not rs.NoMatch
MsgBox "Found null" & rs.AbsolutePosition
rs.FindNext strIsN
Loop
rs.FindNext strIsN
End If
它现在基本上什么都不做。甚至不会触发错误或不匹配。我做错了什么?
【问题讨论】:
-
试试
strIsN = "[String] Is Null" -
不起作用,甚至不会触发不匹配。当我使用该 SQL 创建一个选择查询时,有 3 个结果,其中 2 个为空。
-
我也试过 IsNull(string) = 'True' 作为字符串,它触发了不匹配但仍然不起作用
-
请记住,AbsolutePosition 是基于 0 的,并且会根据您对记录集的排序方式而改变。我认为返回主键值会更好,因为它是该记录所独有的并且不会改变。