使用Excel用户表单搜索Access数据库,并使用VBA在列表框中显示结果
我在Excel中有一个userform,我打算用作搜索表单,并有一个列表框来显示结果 表单将从我的Access数据库中的表中搜索帐号。使用Excel用户表单搜索Access数据库,并使用VBA在列表框中显示结果,excel,database,vba,ms-access,Excel,Database,Vba,Ms Access,我在Excel中有一个userform,我打算用作搜索表单,并有一个列表框来显示结果 表单将从我的Access数据库中的表中搜索帐号。 除了一个搜索字段(文本框),它还有一个搜索按钮(CommandButton)和一个列表框 我的目标: 从Excel连接到我的Access数据库 验证搜索字段。 如果该字段为空,则显示消息以输入帐号。 如果该条目不在表中,则返回一条消息,说明该账号不存在。 如果表中有帐号,则在列表框中显示结果 我正在尝试创建Excel工作表以放置查询结果 AcctNo是Acces
除了一个搜索字段(文本框),它还有一个搜索按钮(CommandButton)和一个列表框 我的目标:
如果该字段为空,则显示消息以输入帐号。
如果该条目不在表中,则返回一条消息,说明该账号不存在。
如果表中有帐号,则在列表框中显示结果
rst.Open qry、cnn、adOpenKeyset、adLockOptimistic
突出显示
我是哪个参数
Private Sub-acctSearchBtn\u Click()
将sh设置为工作表
Set sh=ThisWorkbook.Sheets(“AcctInfo”)
sh.Cells.ClearContents
将cnn设置为新的ADODB.连接
将rst设置为新ADODB.Recordset
像弦一样模糊,
作为字符串的Dim AcctNo
如果Me.acctnofeld.Value=”“,则
MsgBox“请输入帐号”,VBC
出口接头
ElseIf Me.acctNoField.Value qry然后
cnn.Open“Provider=Microsoft.ACE.OLEDB.12.0;数据源=E:\MasterDb.accdb”
qry=“从membracts中选择*,其中Me.acctNoField.Value=”&AcctNo&“
rst.开放qry、cnn、adOpenKeyset、AdLock
MsgBox“账号不存在”,vbCritical
出口接头
其他的
MsgBox“此处放置检索账户功能”,vbCritical
如果结束
rst.关闭
有线电视新闻网,结束
端接头
在qry代码中,Me.acctNoField.Value和AcctNo处于彼此的位置。不需要声明AcctNo变量。将acctnofeld.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
为什么要涉及Excel呢?为什么需要导出到Excel?为什么不从访问端进行搜索、筛选和导出?Review是表名实际上拼写为MembrAccts还是缺少
e
?当Access无法将查询语句中的名称与Access表字段(或其他表达式)匹配时,它会将名称解释为参数(请参阅上的DAO/ACE部分)。如果没有为参数指定值,则会出现此错误。我假设您的Access数据库中没有名为Me.acctNoField.Value
的字段;因此出现了错误。感谢您的回复。我会检查我的代码。谢谢。我一定会努力的。