我有一个在OnOpen事件上打开的表单。部分事件包含以下代码:
nid = Val(DMax("id2", "claims", "yr =" & yr) + 1)
nid = Val(Nz([nid], 1))
但是,运行时出现“无效使用空”错误。 有什么想法吗?
以下编辑 这是完整的代码:
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
答案 0 :(得分:3)
仔细检查DMax
表达式返回的值。如果没有符合条件选项("yr =" & yr
)的行,则DMax
将返回Null。或者,如果符合条件的所有行中id2
为空,则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