3

我有一个在 OnOpen 事件中打开的表单。部分事件包含以下代码:

nid = Val(DMax("id2", "claims", "yr =" & yr) + 1)
nid = Val(Nz([nid], 1))

但是,运行时出现“无效使用 Null”错误。有任何想法吗?

在下面编辑 这是完整的代码:

Private Sub Form_Open(Cancel As Integer)
If Not IsNull(Me.OpenArgs) Then
Dim lngID As Long
Dim rs As Object

Set rs = Me.Recordset.Clone
lngID = Val(Me.OpenArgs)
rs.FindFirst "[ID] = " & lngID
If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End If
Me.LOGID.SetFocus

'Display Suggested ID Numbers
Dim yr As Long
Dim nid As Long

yr = Format(Date, "yy")
nid = Val(DMax("id2", "claims", "yr =" & yr) + 1)
nid = Val(Nz([nid], 1))
Me.SugID = yr & "-" & nid

End Sub
4

1 回答 1

3

仔细检查表达式返回的值DMax。如果没有行匹配条件选项 ( "yr =" & yr),DMax将返回 Null。或者如果id2在所有符合条件的行中为 Null,DMax将返回 Null。

如果DMax表达式返回 Null,则Val()表达式等价于:

Val(Null + 1)

但是 Null + 1 会产生 Null,因此这与询问Val(Null)哪个触发错误 #94“无效使用 Null”相同。

我不确定你想要什么。如果claims.id2是数字数据类型,也许这会起作用:

nid = Nz(DMax("id2", "claims", "yr =" & yr), 0) + 1
于 2013-01-08T07:02:11.257 回答