Access-VBA SQL查询数据库和更新列表框,其结果为

时间:2016-05-26 11:58:34

标签: sql vba access-vba

所以我做了很多质疑,在线观看,在网络上看到我很可能是盲人,但我没有想法。

为了解决我的问题,我有以下内容:

表单中包含“疑难解答”,如下所示

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

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

  • ID
  • ManufacturerSolution
  • ModelSolution
  • DateSolution
  • UserSolution
  • SolutionText

现在是复杂的部分。

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

“cboManfact”和“cboModel”包含存储在单独表格中的制造商和型号的列表,该表格完美无缺。

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

例如:

  • cboManfact = Turbo
  • cboModel = 1600

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

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

这就是我现在所拥有的:

lstSolutions recordSource:

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的帮助,这是一个独立的主题,但主要帮助我创建了这个主题,以便更清楚地解释这个问题。

我在某种程度上理解现在发生了什么,但我只是没有足够的经验来解决这个问题,并且想要了解人们的建议。

1 个答案:

答案 0 :(得分:0)

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

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