Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 运行时错误424需要对象_Ms Access_Vba - Fatal编程技术网

Ms access 运行时错误424需要对象

Ms access 运行时错误424需要对象,ms-access,vba,Ms Access,Vba,我一直在编写下面的代码,当用户单击按钮保存并转到新记录时,Access会找到set location使用的最高客户机id,然后向其中添加1。在保存记录并转到新记录之前。虽然处理了其他错误,但我无法通过此行所需的错误对象。“Me.ClientID=IIf(DMax(“[ClientID]”、“tClientinfo”、“[CorpsName]=”和“'defaultcorps')为空,0,DMax(“[ClientID]”、“tClientinfo”、“[CorpsName]=”和“'defaul

我一直在编写下面的代码,当用户单击按钮保存并转到新记录时,Access会找到set location使用的最高客户机id,然后向其中添加1。在保存记录并转到新记录之前。虽然处理了其他错误,但我无法通过此行所需的错误对象。“Me.ClientID=IIf(DMax(“[ClientID]”、“tClientinfo”、“[CorpsName]=”和“'defaultcorps')为空,0,DMax(“[ClientID]”、“tClientinfo”、“[CorpsName]=”和“'defaultcorps'))+1”

我越是关注类似的问题,就越是困惑于代码到底出了什么问题。大卫,提前谢谢你的建议

    Private Sub Save_Record_Click()

'declare variables for default values
Dim defaultinterviewr As String
Dim defaultcorps As String


'Variables get their values
defaultinterviewr = Me.Interviewer.Value
defaultcorps = Me.Corps.Value

'Check to see if ClientID field is Blank.
If IsNull(Me.ClientID) Then

'Check that Corps field is filled in

If IsNull(Me.Corps) Then
    MsgBox "Corps must be entered before saving record.", vbOKOnly
    Me.Corps.SetFocus
'set client id base on corps by finding the highest id and adding 1 to that number
Else
Me.ClientID = IIf(DMax("[ClientID]", "tClientinfo", "[CorpsName]=" & "'defaultcorps'") Is Null, 0, DMax("[ClientID]", "tClientinfo", "[CorpsName]=" & "'defaultcorps'")) + 1
End If
End If
MsgBox "Done", vbOKOnly

'save record
'DoCmd.RunCommand acCmdSaveRecord
'Me.stateidnum1 = ""
'open new record
'DoCmd.GoToRecord , , acNewRec

'set field default value
'Me.Interviewer.Value = defaultinterviewr
'Me.Corps.Value = defaultcorps

'Me.Child_Subform.Form.AllowAdditions = True

End Sub

我认为您需要先弄清楚您的DMAX()语句是否正确地生成了结果。接下来我看到的可能是您的罪魁祸首是您在VBA中使用表达式IIf()。您正在使用的IIf()表达式将在查询或文本框中工作,但VBA有自己的If语句块,您在前面的行中正确使用了该语句块

实际上,我会使用Nz函数来简化它,如下所示:

更新了根据您下面的评论,我重新查看了您的总体代码,注意到“defaultcorps”是一个变量,而不是我最初认为您试图筛选的值。您正在将变量用引号括起来。我的最新答案应该适合你

Me.ClientID = (Nz(DMax("[ClientID]", "tClientinfo", "[CorpsName]= '" & defaultcorps & "'"),0)+1)

Anthony谢谢你指出DMAX函数不起作用这是我的问题。虽然我不能找出字段、表和critera的正确语法。请参阅上面我更新的答案。我忽略了defaultcorps是一个变量而不是一个数据值这一事实。这个更新应该会产生你正在寻找的。很高兴我能帮助你。你可以将它标记为答案,以防其他人有类似的问题。