Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.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
Vba 运行时错误15-更改MS Access数据库中密码的代码类型不匹配_Vba_Ms Access_Ms Access 2016 - Fatal编程技术网

Vba 运行时错误15-更改MS Access数据库中密码的代码类型不匹配

Vba 运行时错误15-更改MS Access数据库中密码的代码类型不匹配,vba,ms-access,ms-access-2016,Vba,Ms Access,Ms Access 2016,我在以下行中得到运行时错误15: Set rs = CurrentDb.OpenRecordset("Select * From [User Registration Details] where [UserID]=" & MyuserID) MyuserID=Me.txtfirstname.Value来自以下代码: Option Compare Database Option Explicit Private Sub cmdchange_Click()

我在以下行中得到运行时错误15:

 Set rs = CurrentDb.OpenRecordset("Select * From [User Registration Details] where [UserID]=" & MyuserID)
MyuserID=Me.txtfirstname.Value
来自以下代码:

Option Compare Database
Option Explicit

Private Sub cmdchange_Click()
    On Error Resume Next
    If Trim(Me.txtnewpass & "") <> Trim(Me.txtconfirmpass & "") Then
    MsgBox "Passwords do not match", vbExclamation + vbOKOnly, ""
    Me.cmdchange.Enabled = False
    Else
    Me.cmdchange.Enabled = True
    Dim rs As DAO.Recordset
    Set rs = CurrentDb.OpenRecordset("Select' From[User Registration Details] where [UserID]=" & MyuserID)
    If Not rs.EOF And Not rs.BOF Then
        rs.Edit
        rs("Password") = txtconfirmpass
        rs.Update
        rs.Close
        Set rs = Nothing
        MsgBox "Your Password has been successfully changed", vbInformation, "Electporl"
        DoCmd.Close acForm, "frmnewpassword", acSaveNo
        DoCmd.OpenForm "frmlogin"
      End If
    End If
选项比较数据库
选项显式
私有子cmdchange_Click()
出错时继续下一步
如果Trim(Me.txtnewpass&“”)Trim(Me.txtconfirmpass&“”),则
MsgBox“密码不匹配”,VBEQUOTION+vbOKOnly“
Me.cmdchange.Enabled=False
其他的
Me.cmdchange.Enabled=True
Dim rs作为DAO.Recordset
设置rs=CurrentDb.OpenRecordset(“从[User Registration Details]中选择”,其中[UserID]=”&MyuserID)
如果不是rs.EOF和rs.BOF,则
rs.编辑
rs(“密码”)=txtconfirmpass
rs.更新
rs.Close
设置rs=无
MsgBox“您的密码已成功更改”,vbInformation,“Electropor”
文件关闭acForm,“frmnewpassword”,acSaveNo
DoCmd.OpenForm“frmlogin”
如果结束
如果结束
假设我将下面的代码放在按钮上,该按钮将用户带到更改密码表单

Private Sub cmdproceed_Click()
       If IsNull(Me.txtfirstname) Or Me.txtfirstname = "" Then
       Me.mand1.Visible = True
       Me.txtfirstname.SetFocus
    End If
      If IsNull(Me.txtemail) Or Me.txtemail = "" Then
      Me.mand2.Visible = True
      Me.txtemail.SetFocus
    End If
      Dim rs As Recordset

    Set rs = CurrentDb.OpenRecordset("User Registration Details", dbOpenSnapshot, dbReadOnly)
    rs.FindFirst ("Firstname='" & Nz(Me.txtfirstname, "") & "'")

    If rs.NoMatch = True Then
        Me.lbl1.Visible = True
        Me.txtfirstname.SetFocus
        Exit Sub
    End If

    If rs!Username <> Nz(Me.txtemail, "") Then
        Me.lbl2.Visible = True
        Me.txtemail.SetFocus
        Exit Sub
    End If
    'MyuserID is publicly declared as Long in a module
    MyuserID = Me.txtfirstname.Value
    DoCmd.OpenForm " frmnewpassword"
    DoCmd.Close acForm, Me.Name

End Sub
Private Sub cmdproceduce\u Click()
如果IsNull(Me.txtfirstname)或Me.txtfirstname=“”,则
Me.mand1.Visible=True
Me.txtfirstname.SetFocus
如果结束
如果IsNull(Me.txtemail)或Me.txtemail=“”,则
Me.mand2.Visible=True
Me.txtemail.SetFocus
如果结束
将遥感器作为记录集
Set rs=CurrentDb.OpenRecordset(“用户注册详细信息”,dbOpenSnapshot,dbReadOnly)
rs.FindFirst(“Firstname=”&Nz(Me.txtfirstname,”&“”)
如果rs.NoMatch=True,则
Me.lbl1.Visible=True
Me.txtfirstname.SetFocus
出口接头
如果结束
如果是的话!用户名Nz(Me.txtemail,“”),然后
Me.lbl2.Visible=True
Me.txtemail.SetFocus
出口接头
如果结束
'MyuserID在模块中公开声明为长
MyuserID=Me.txtfirstname.Value
DoCmd.OpenForm“frmnewpassword”
DoCmd.Close acForm,Me.Name
端接头
第二个代码分配给按钮,该按钮将用户重定向到表单,该表单将允许用户在验证其名字和电子邮件后更改密码


第二个密码现在分配给按钮,该按钮将通过覆盖旧密码来帮助用户更改密码。

请在您的过程中传递
用户ID

cmdcontinue\u Click()
过程中,更新以下部分:

'MyuserID is publicly declared as Long in a module
MyuserID = rs("UserID")
cmdchange\u单击()
过程中,更新以下行:

 Set rs = CurrentDb.OpenRecordset("Select * From [User Registration Details] where [UserID]=" & MyuserID)
从逻辑的角度来看,您可以让其他人使用相同的
firstname
,因此对
firstname
进行筛选只会在应用程序生命周期的后期引入意外行为


如果您有两个或更多名为“Joshua”的用户,那么您的代码将始终选择第一个名为“Joshua”的用户。您需要更新此逻辑以选择唯一的用户。

问题出在哪里?当我单击“继续”按钮时,会出现运行时错误15,表示类型不匹配,并突出显示“MyuserID=Me.txtfirstname.Value”行。我弄不清楚出了什么问题。请帮帮我。txtfirstname是字符串吗?听起来像一个字符串,您不能将字符串存储在长字符串中。此处的错误消息应该会告诉您解决此问题所需的所有信息。类型不匹配,因此试图存储在变量中的数据类型与声明变量的类型不兼容。