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)に一致する行がない場合、 DMaxNullを返します。またはid2、条件に一致するすべての行でがNullの場合、NullDMaxを返します。

DMax式がNullを返す場合、式は次のVal()ようになります。

Val(Null + 1)

Val(Null)ただし、Null + 1はNullを生成するため、エラー#94「Nullの無効な使用」をトリガーするかどうかを尋ねるのと同じです。

代わりに何が欲しいのかわかりません。が数値データ型の場合claims.id2、おそらくこれは機能します。

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