SQL命令“使用ComboBox数据输入参数值”

时间:2016-05-27 12:16:39

标签: sql vba ms-access access-vba ms-access-2013

我目前有以下代码

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 ManfactQuery = Null Or ManfactQuery = Null Then
strSQL = "SELECT [Solutions].SolutionText FROM [Solutions] WHERE [Solutions].ModelSolution = " & ModelQuery & ""

    Else

        If ModelQuery = Null Or 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

我试图将组合框的文本值传递给SQL语句,它的工作原理和范围,但我得到“输入参数值”弹出对话框。如果我然后输入组合框的值并单击确定,它会使用相应的字段填充列表框,但如果可能的话我不需要对话框。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

首先你可能是这个意思:

If ManfactQuery = Null Or ManfactQuery = Null Then

是这样的:

If ManfactQuery = Null Or ManfactQuery = "" Then

它可以更好地表示如下:

If Nz(ManfactQuery)="" then

现在到实际问题。由于ManfactQueryModelQuery是文本值,因此需要在SQL文本中用单引号括起来,如下所示:

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

答案 1 :(得分:1)

解决了它。非常感谢@Charlie和@ SunKnight0

代码如下:

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 Len(ModelQuery) = 0 Then

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

    Else

If Len(ManfactQuery) = 0 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

非常感谢你们,经过3天的尝试,我得到了它!