从Access数据库中搜索Excel用户窗体,并使用VBA在列表框中显示结果

问题描述 投票:0回答:1

我在Excel中有一个用户表单,打算用作搜索表单,并且有一个列表框列出结果。我正在使用VBA。单击搜索按钮后,该表单将从我的Access数据库中的表中搜索一个帐号。除了“搜索”字段(“文本框”)外,它还有一个搜索按钮(“命令按钮”)和一个“列表框”。我的目标是:

  1. 使用VBA从Excel连接到我的Access数据库(具有我要搜索的表)>
  2. 验证搜索字段。如果该字段为空,将显示消息以输入帐号。如果该条目不在表中找到的条目之中,它将返回一条消息,提示正在搜索的帐号不存在。如果搜索的是表中的帐号之一,它将在列表框中显示结果。
  3. 我正在尝试创建一个Excel工作表来放置查询结果。

    1. AcctNo是我打算进行搜索的Access中我的MemberAccts表的头之一
  4. acctNoField是我的搜索表单中搜索字段的名称
  5. 错误是说“没有为一个或多个参数提供值”。调试时,突出显示“ rst.Open qry,cnn,adOpenKeyset,adLockOptimistic”。

我只是不知道我缺少哪个参数。抱歉,我是新手。为非营利组织做。帮助将不胜感激。这是我的VBA代码:

Private Sub acctSearchBtn_Click()

Dim sh As Worksheet
Set sh = ThisWorkbook.Sheets("AcctInfo")
sh.Cells.ClearContents

    Dim cnn As New ADODB.Connection
    Dim rst As New ADODB.Recordset

    Dim qry As String, 
    Dim AcctNo As String


   If Me.acctNoField.Value = "" Then
    MsgBox "Please enter an Account Number", vbCritical
        Exit Sub

    ElseIf Me.acctNoField.Value <> qry Then

    cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\MasterDb.accdb"
    qry = "SELECT * FROM MembrAccts WHERE Me.acctNoField.Value= '" & AcctNo & "'"

    rst.Open qry, cnn, adOpenKeyset, adLockOptimistic

    MsgBox "The Account Number does not exists", vbCritical
Exit Sub

    Else
        MsgBox "Place Retrieve_account function here", vbCritical

 End If

rst.Close
cnn.Close

End Sub

我在Excel中有一个用户表单,打算用作搜索表单,并且有一个列表框列出结果。我正在使用VBA。表单将从我的Access数据库中的表中搜索帐号...

excel database excel-vba ms-access access
1个回答
0
投票

您在qry代码中的彼此位置中都有Me.acctNoField.Value和AcctNo。不需要声明AcctNo变量。将acctNoField.Value与qry变量进行比较没有任何意义。

考虑:

© www.soinside.com 2019 - 2024. All rights reserved.