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)
获得了正确的值,现在所有问题都已解决,非常感谢。您完美地解决了我的问题!!谢谢,我将回答:)