Access-VBA SQL 查询数据库并使用结果更新 ListBox

Posted

技术标签:

【中文标题】Access-VBA SQL 查询数据库并使用结果更新 ListBox【英文标题】:Access-VBA SQL Query Database and Update ListBox with results 【发布时间】:2016-05-26 11:58:34 【问题描述】:

所以我在网上和整个网络上做了很多提问,我很可能是盲人,但我没有想法。

为了解决我的问题,我有以下几点:

“疑难解答”表单中包含以下内容

2 个名为“cboManfact”和“cboModel”的组合框 1 个名为“lstSolutions”的列表框 1 个名为“HomeReturn”的按钮 1 个名为“db_Search”的按钮

包含在“解决方案”表中,我有以下字段

身份证 制造商解决方案 模型解决方案 日期解决方案 用户解决方案 解决方案文本

现在是复杂的部分。

“lstSolutions”需要显示“SolutionText”但是有一个问题。

“cboManfact”和“cboModel”包含存储在单独表格中的制造商和型号列表,可以完美运行。

我需要什么。只有当“cboManfact”文本和“cboModel”文本与解决方案表中的条目匹配时,“lstSolutions”才会显示“SolutionText”。

例如:

cboManfact = 涡轮 cboModel = 1600

点击“db_Search”按钮后,“lstSolutions”将填充“SoltionText”的所有结果,其中“ManufacturerSolution”=“cboManfact”和“ModelSolution”=“cboModel”

我目前使用的 SQL 查询的问题是它会使用“解决方案”中的每个结果填充列表框,但是在单击执行重新查询的“db_search”按钮时,列表框会清空,所以我不认为 SQL 命令确保 cbomanfact 等匹配。

这是我目前拥有的:

lstSolutions 记录来源:

SELECT [SolutionText] FROM [Solutions] WHERE solutions.ManufacturerSolution like forms![Troubleshoot]!cboManfact & "*" AND solutions.ModelSolution like forms![Troubleshoot]!cboModel & "*"

db_click 代码:

Private Sub dbSearch_Click()
     me.lstSolutuions.requery
end sub

如果有人有任何想法,或者有更好的解释方式,那将会有所帮助。我在一个单独的线程上得到了 LiamH 的帮助,这对我有很大帮助,但我创建了这个线程是为了更清楚地解释这个问题。

我在一定程度上了解现在发生了什么,但我只是没有足够的经验来解决这个问题,并且想知道人们会提出什么建议。

【问题讨论】:

尝试使用 Me.ReCalc 列表框显示“SolutionText”字段,直到我在组合框中输入内容并单击列表框取消填充的“db_click”。你能看到 SQL 命令有什么问题吗? :( 【参考方案1】:

在按钮单击时使用以下代码解决了问题:

Private Sub dbSearch_Click()

Dim ManfactQuery As String
Dim ModelQuery As String
Dim strSQL As String

ManfactQuery = Me.cboManfact.Column(1)
ModelQuery = Me.cboModel.Column(1)

If Nz(ManfactQuery) = "" Then

strSQL = "SELECT [Solutions].SolutionText FROM [Solutions] WHERE [Solutions].ModelSolution = '" & ModelQuery & "'"

Else

If Nz(ModelQuery) = "" Then

strSQL = "SELECT [Solutions].SolutionText FROM [Solutions] WHERE [Solutions].ManufacturerSolution = '" & ManfactQuery & "'"

Else

strSQL = "SELECT [Solutions].SolutionText FROM [Solutions] WHERE [Solutions].ManufacturerSolution = " & ManfactQuery & " AND [Solutions].ModelSolution = " & ModelQuery & ""

End If

End If

Me.lstSolution.RowSource = strSQL

End Sub

【讨论】:

以上是关于Access-VBA SQL 查询数据库并使用结果更新 ListBox的主要内容,如果未能解决你的问题,请参考以下文章

Access-vba复制数据错误

SQL查询并导出?

SQL查询结果一字段相同合并,另一字段为数字和逗号合并并去重

MySQL能够编写运行查询SQL并可视化结果的Web应用:SqlPad

显示繁重的 SQL 查询中间结果

sql 查询结果合并union all用法_数据库技巧