开放式被取消错误已重新解决



openform在我的应用程序中重新出现。我已经分解/紧凑并修复了两次。

代码投掷错误: '开放菜单表格 docmd.openform"菜单",acnormal ,,, acwindowownormal

第一次遇到此错误时,我通过更改解决了:

DoCmd.OpenForm "Menu", acNormal, "", "", , acNormal

to

DoCmd.OpenForm "Menu", acNormal, , , , acWindowNormal.

这是我的程序,有例外:

Private Sub Login(recordSet As DAO.recordSet, PERSAL As String, Password As String)
On Error GoTo Login_ErrHandler
'Check to see if the recordset actually contains rows
If Not (recordSet.EOF And recordSet.BOF) Then
    recordSet.MoveFirst 'Unnecessary in this case, but still a good habit
    'See if credentials match data
    Do
        If (recordSet!User_ID = PERSAL And recordSet!Password = Password) Then
           'Open Menu form
            DoCmd.OpenForm "Menu"
           ' Form_Menu.op
            recordSet.Close 'Close the recordset
            Set recordSet = Nothing 'Clean up
            'Close Login form
            DoCmd.Close acForm, "Login"
            Exit Do
        End If
        recordSet.MoveNext
        If (recordSet.EOF Or recordSet.BOF) Then
            MsgBox "Your credentials are incorrect or you are not registered."
            Exit Do
        End If
    Loop
    'Match the values entered for PERSAL nr. and password fields with a row in User table
Else
    MsgBox "There are no records in the recordset."
     recordSet.Close 'Close the recordset
     Set recordSet = Nothing 'Clean up
End If
Form_Login.txtUser_ID.SetFocus
Login_ErrHandler:
If Err = 2501 Then
    'MsgBox "No data to display"
    DoCmd.Hourglass False
    Resume Login_ErrHandler
' Else
 '   MsgBox Err.Description, vbCritical
End If
End Sub

这次我该如何解决此错误?

使用以下SQL创建一个参数化查询:

PARAMETERS [prmUserId] Text ( 255 ), [prmPassword] Text ( 255 );
SELECT User_ID, Password 
FROM YOUR_TABLE_NAME
WHERE ((([User_ID])=[prmUserId]) AND (([Password])=[prmPassword]));

假设代码在登录表格后面:

Private Sub Login(ByVal PERSAL As String, ByVal Password As String)
    On Error GoTo Login_ErrHandler
    Dim qdf As DAO.QueryDef
    Set qdf = CurrentDb().QueryDefs("YourQueryName") 'Change to your query name
        qdf.Parameters("[prmUserId]").Value = PERSAL
        qdf.Parameters("[prmPassword]").Value = Password
    Dim rs As DAO.recordSet
    Set rs = qdf.OpenRecordset()
    'No records
    If rs.EOF Then
        MsgBox "Your credentials are incorrect or you are not registered."
        Me.txtUser_ID.SetFocus
        GoTo Leave
    End If
    'User found
    'Close Login Form
    DoCmd.Close acForm, Me.Name, acSavePrompt
    'Open Form
    DoCmd.OpenForm "Menu", acNormal, , , acFormPropertySettings, acWindowNormal
Leave:
    On Error Resume Next
        rs.Close
    Set rs = Nothing
        qdf.Close
    Set qdf = Nothing
    On Error GoTo 0
    Exit Sub
Login_ErrHandler:
    MsgBox Err.Number & " - " & Err.Description, vbCritical
    Resume Leave
End Sub

最新更新