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 Access VB如何让一个模块忽略第二个模块_Ms Access - Fatal编程技术网

Ms access Access VB如何让一个模块忽略第二个模块

Ms access Access VB如何让一个模块忽略第二个模块,ms-access,Ms Access,我在access中有一个表单,我输入支票号码,它在表中查找最后一个支票号码,我希望能够输入文本现金而不是支票号码,但当我输入现金时,模块1第二次运行,然后它将从数据库表返回最后一个支票号码。 我在Access visual basic中有两个不同的模块,如果第一个模块运行且为true,如何使其忽略第二个模块 单元1 Private Sub CheckNum_BeforeUpdate(Cancel As Integer) Dim rslt As String DoCmd.S

我在access中有一个表单,我输入支票号码,它在表中查找最后一个支票号码,我希望能够输入文本现金而不是支票号码,但当我输入现金时,模块1第二次运行,然后它将从数据库表返回最后一个支票号码。 我在Access visual basic中有两个不同的模块,如果第一个模块运行且为true,如何使其忽略第二个模块

单元1

   Private Sub CheckNum_BeforeUpdate(Cancel As Integer)
Dim rslt As String
    
    DoCmd.SetWarnings False
    If DCount("*", "FurChecks", "[CheckNum]='" & Me.CheckNum & "'") > 0 Then
      rslt = MsgBox("This number has already been entered. Do you wish to continue?", vbOKOnly)
        Me.Undo
        DoCmd.SetWarnings True
        
    Else
        'do nothing
    End If
  
End Sub
单元2

 Private Sub CheckNum_LostFocus()
On Error GoTo Err_CheckNum_LostFocus

    Dim db As Database
    Dim rsCheckNumber As Recordset
    
    Set db = CurrentDb
    Set rsCheckNumber = db.OpenRecordset("LastUsedCheckNumber")


    If Me.TempNewCheckNumber = Me.CheckNum Then
     rsCheckNumber.MoveFirst
        rsCheckNumber.Edit
        rsCheckNumber!LastUsedCheckNumber = Me.TempNewCheckNumber
        rsCheckNumber.Update
    End If
    
Exit_CheckNum_LostFocus:
    rsCheckNumber.Close
    db.Close
    Set db = Nothing
    Set rsCheckNumber = Nothing

    Exit Sub

Err_CheckNum_LostFocus:
    MsgBox Err.Description
    Resume Exit_CheckNum_LostFocus
    
    
End Sub

首先,表单的代码模块中没有两个模块,而是两个子函数

接下来,如果不希望更新,请取消更新:

Private Sub CheckNum\u在更新之前(取消为整数)
如果DCount(“*”、“FurChecks”、“[CheckNum]=”、“&Me.CheckNum&“”)大于0,则
取消=真
如果结束
如果Cancel=True,则
MsgBox“此号码已输入。”,vbOKOnly
我,解开
如果结束
端接头
最后,将LostFocus代码移动到AfterUpdate事件:

Private Sub-CheckNum\u AfterUpdate()

首先,表单的代码模块中没有两个模块,只有两个子功能

接下来,如果不希望更新,请取消更新:

Private Sub CheckNum\u在更新之前(取消为整数)
如果DCount(“*”、“FurChecks”、“[CheckNum]=”、“&Me.CheckNum&“”)大于0,则
取消=真
如果结束
如果Cancel=True,则
MsgBox“此号码已输入。”,vbOKOnly
我,解开
如果结束
端接头
最后,将LostFocus代码移动到AfterUpdate事件:

Private Sub-CheckNum\u AfterUpdate()

Dave,您的控制事件不应位于常规模块中,而应位于它们所属的表单模块中。您还应该查看这篇关于事件顺序的文章:我的建议是将所有代码放在Before_Update事件中,并在那里进行逻辑检查。您还可以在当前代码中禁用/重新启用事件,但这可能会变得棘手。HTHDave,您的控制事件不应位于常规模块中,而应位于它们所属的模块形式中。您还应该查看这篇关于事件顺序的文章:我的建议是将所有代码放在Before_Update事件中,并在那里进行逻辑检查。您还可以在当前代码中禁用/重新启用事件,但这可能会变得棘手。嗯