sql - 带有 VBA 的 MS Access 快速组合框
问题描述
我有一个表单,上面有一个 ComboBox,它通过 ID 提取记录并显示链接表中的名称。标准在生成的表单组合框向导中查找值。它工作得很好,但每次找到一条记录需要 3-4 分钟。
我一直在尝试对此进行研究,并发现了一些看起来很有用但似乎无法正确处理的东西。
我目前拥有的代码:
Private Sub Combo81_Change()
Dim strText As String
Dim strSelect As String
strText = Nz(Me.Combo81.Text, "")
If Len(strText) > 2 Then
strSelect = "SELECT Name FROM CTable WHERE Name LIKE '*" & strText & "*'; "
Debug.Print strSelect
Me.Combo81.RowSource = strSelect
Me.Combo81.Dropdown
End If
End Sub
我在两个论坛上找到了这段代码,这应该执行以下操作:“关键是没有为组合框定义行源。行源将在用户开始输入字母时定义。一旦他们达到 3字母然后组合框的行源将被定义,组合框将被告知下拉。”
当我达到 3 个字母时,会出现一个下拉列表,但它是空白的,它不显示任何结果。
我想当用户键入时,例如“Smith”,只有那些名为 Smith 的人出现。
我对 Access 和数据库比较陌生,我正在使用 FE/BE 将表链接到共享网络文件夹和用户桌面上的 FE。
有什么建议吗?或者关于如何更快地使用我的组合框并且仍然保持值唯一的不同解决方案?
解决方案
您可以使用以下代码作为用户类型在 ms 访问的组合框中搜索值,假设我们的表单中有一个组合框名称 org_id,要在 org_id 中搜索值,我们需要 org_id 组合框上的三个事件。AfterUpdate、LostFocus 和 KeyPress 事件。代码是:
Dim strFilter As String ' Module scope variable used for filter on our combo (org_id)
Private Sub org_id_AfterUpdate()
strFilter = ""
strSQL = "SELECT org_tbl.org_id, org_tbl.org_name, org_tbl.org_code FROM org_tbl" & _
" ORDER BY org_tbl.org_code"
org_id.RowSource = strSQL
End Sub
Private Sub org_id_LostFocus()
strFilter = ""
strSQL = "SELECT org_tbl.org_id, org_tbl.org_name, org_tbl.org_code FROM org_tbl" & _
" ORDER BY org_tbl.org_code"
org_id.RowSource = strSQL
End Sub
Private Sub org_id_KeyPress(KeyAscii As Integer)
strSQL = "SELECT org_tbl.org_id, org_tbl.org_name, org_tbl.org_code FROM org_tbl ORDER BY org_tbl.org_code"
If KeyAscii <> 8 Then ' pressed key is not backspace key
strFilter = strFilter & Chr(KeyAscii)
End If
If IsNull(strFilter) = True Or strFilter <> "" Then
If KeyAscii = 8 Then ' pressed key is backspace key
strFilter = Left(strFilter, (Len(strFilter) - 1))
End If
End If
strSQL = "SELECT org_tbl.org_id, org_tbl.org_name, org_tbl.org_code FROM org_tbl" & _
" WHERE org_name Like '*" & strFilter & "*' ORDER BY org_tbl.org_code"
org_id.RowSource = strSQL
org_id.Dropdown
End Sub
我希望这个(答案)对你有帮助。
编辑:您可以从以下链接下载示例文件: 访问组合框以在键入示例文件时进行搜索
推荐阅读
- javascript - 在创建新 div 时显示 div/section 内的内容
- javascript - 选项卡打开/关闭时在 localStorage 中保存数据时的数据竞争
- python-3.x - 将 gzip 文件从 s3 摄取到 Postgres 用于编码“UTF8”的无效字节序列
- ios - 使用 Apple 登录:错误:注册未完成
- autohotkey - 在 RDP 中为 AutoHotKey 脚本发送不区分大小写的热键
- python - 使用边界框进行数据增强
- rx-java - 当 Flowable 通过热观察者创建工作时尊重背压
- scipy - 我应该使用 scipy.signal.firwin 进行放大吗?
- html - 为什么提交按钮总是调用图像?
- flutter - provides YouTube suggestions using flutter