SQL命令";输入参数值";使用组合框数据

SQL命令";输入参数值";使用组合框数据,sql,ms-access,vba,ms-access-2013,Sql,Ms 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 = "S

我目前有以下代码

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语句中,它可以工作到和范围,但我得到了“输入参数值”弹出对话框。如果然后输入组合框的值并单击“确定”,它会用相应的字段填充列表框,但如果可能,我不需要对话框


有什么想法吗?

首先,你的意思可能是:

如果ManfactQuery=Null或ManfactQuery=Null,则

为此:

如果ManfactQuery=Null或ManfactQuery=“”,则

可以这样更好地表示:

如果Nz(ManfactQuery)=“”,则

现在谈谈实际问题。由于
ManfactQuery
ModelQuery
是文本值,它们需要在SQL文本中用单引号括起来,如下所示:


strSQL=“选择[Solutions].SolutionText来自[Solutions],其中[Solutions].ModelSolution='”&ModelQuery&'”
解决了它。非常感谢@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

非常感谢大家,经过三天的努力,我终于明白了

你读过这个吗?我读过了,但我个人无法让它发挥作用。但我可能是太蠢了(我正在使用Access 2013,如果这有什么不同的话。)OK-你在某个步骤上卡住了吗?你有错误吗?这听起来像是MS错误,而不是编码问题。换句话说,我不能给你任何代码来修复问题。我没有收到错误,但它只是从表单本身带来了一堆数据。问题是,这不是查询,只是很难编码到按钮“db_search”中,因此我认为SQL命令没有正确读取从ManfactQuery或ModelQuery传递的值。组合框从另外两个表中提取数据,然后db search引用第三个表。这可能是因为我使用的是.Column(1)我只对组合框中包含的文本感兴趣。谢谢!我会马上开始,并进行相应的简短调整,但是当我现在单击按钮时,参数值对话框不会显示,但我不会在lsitbox中显示任何内容,不像手动将值输入到在对话框中,您可能会遇到另一个问题:
ManfactQuery=Me.cboManfact.Column(1)ModelQuery=Me.cboModel.Column(1)
尝试设置Column(1)(或任何具有您要查找的实际值的列)要成为绑定列并使用
ManfactQuery=Me.cboManfact ModelQuery=Me.cboModel
然后验证您是否通过
MsgBox(ManfactQuery)
获得了正确的值,现在所有问题都已解决,非常感谢。您完美地解决了我的问题!!谢谢,我将回答:)