[英]Search Access database with an Excel Userform and display results in Listbox using VBA
我在 Excel 中有一个用户表单,我打算用作搜索表单,并有一个列表框来显示结果。
该表单将从我的 Access 数据库中的表中搜索帐号。
除了搜索字段 (TextBox),它还有一个搜索按钮 (CommandButton) 和一个列表框。
我的目标:
我正在尝试创建一个 Excel 工作表来放置我的查询结果。
错误是
“没有为一个或多个参数指定值”。
调试时, rst.Open qry, cnn, adOpenKeyset, adLockOptimistic
高亮显示。
我是哪个参数?
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
你有 Me.acctNoField.Value 和 AcctNo 在 qry 代码中彼此的位置。 不需要声明 AcctNo 变量。 将 acctNoField.Value 与 qry 变量进行比较是没有意义的。 缺少空记录集的测试。
考虑:
If Me.acctNoField.Value = "" Then
MsgBox "Please enter an Account Number", vbCritical
Else
cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\MasterDb.accdb"
qry = "SELECT * FROM MembrAccts WHERE AcctNo = '" & Me.acctNoField.Value & "'"
rst.Open qry, cnn, adOpenKeyset, adLockOptimistic
If rst.EOF And rst.BOF Then
MsgBox "The Account Number does not exist", vbCritical
Else
'code here to read data from recordset, perhaps use CopyFromRecordset
sh.Range("A1").CopyFromRecordset rst
End If
rst.Close
cnn.Close
End If
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.