2013-01-08 54 views
3

我有一個打開OnOpen事件的窗體。部分事件包含此代碼:NZ使用空值無效

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

我也嘗試運行這樣說:NID = NZ(瓦爾(DMAX( 「ID2」, 「索賠」, 「年=」 &年) + 1),1) – Rick

回答

3

仔細檢查由DMax表達式返回的值。如果沒有行符合條件選項("yr =" & yr),則DMax將返回空值。或者如果id2在符合條件的所有行中爲空,則DMax將返回空值。

如果DMax表達式返回Null,則Val()表達式等價於這樣的:

Val(Null + 1) 

但是空+ 1生成NULL,所以這是作爲要求Val(Null)其觸發錯誤#94相同, '空使用無效'。

我不確定你想要什麼。如果claims.id2是數字數據類型,也許這將工作:

nid = Nz(DMax("id2", "claims", "yr =" & yr), 0) + 1 
+0

你太棒了!那正是我需要的!如果一切都爲空,我希望它回來1.謝謝! – Rick