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的主要内容,如果未能解决你的问题,请参考以下文章
SQL查询结果一字段相同合并,另一字段为数字和逗号合并并去重