Database 如何基于InputBox中的信息运行查询?

Database 如何基于InputBox中的信息运行查询?,database,ms-access,vba,Database,Ms Access,Vba,在我的表单上,我有一个用户可以单击的按钮。然后,它将用3个输入框提示用户,用户可以在其中输入他想要运行查询的信息。我希望查询根据他输入到3个输入框中的值运行,但我似乎无法理解这一点。查询基于数据库中的另一个表。这是我写的代码。它无法编译,因为我有太多的参数。这可能是因为我不知道如何使用DoCmd.OpenQuery命令传递变量 Private Sub VariableQuery_Click() Dim strProdCode As String Dim strCampC

在我的表单上,我有一个用户可以单击的按钮。然后,它将用3个输入框提示用户,用户可以在其中输入他想要运行查询的信息。我希望查询根据他输入到3个输入框中的值运行,但我似乎无法理解这一点。查询基于数据库中的另一个表。这是我写的代码。它无法编译,因为我有太多的参数。这可能是因为我不知道如何使用DoCmd.OpenQuery命令传递变量

    Private Sub VariableQuery_Click()

    Dim strProdCode As String
    Dim strCampCode As String
    Dim strMailDate As String

    strProdCode = InputBox("Enter Product Code", "Product Code")
    strCampCode = InputBox("Enter Campaign Code", "Campaign Code")
    strMailDate = InputBox("Enter Mail Date", "Mail Date")

    DoCmd.OpenQuery "contribution", , , "[PRODUCT_CODE]=" & strProdCode & _
    "[CAMPAIGN_CODE]=" & strCampCode & "[MAIL_DATE]=" & strMailDate

    End Sub

感谢您的帮助。我尝试运行的查询的名称是“贡献”。PRODUCT_CODE、CAMPAIGN_CODE和MAIL_DATE是数据库中字段的名称,PRODUCT_CODE和CAMPAIGN_CODE都是文本字段,MAIL_DATE是日期/时间字段。

我不知道是否有其他方法可以做到这一点,但我如何解决这个问题是通过创建SQL字符串

Dim strSQL As String
strSQL = "SELECT ... INTO ... " _
       & "FROM ... " _
       & "WHERE [PRODUCT_CODE]='" & strProdCode &"' AND [CAMPAIGN_CODE]='" & strCampCode & "' AND [MAIL_DATE]=#" & strMailDate & "#"
DoCmd.RunSQL strSQL
注意事项

当您有WHERE类型的子句时,您必须适当地限定字段的值,例如围绕字符串、围绕日期,而不围绕数字 DoCmd.RunSQL我相信只运行操作查询,例如更新、删除等。普通选择不是操作查询。 如果要隐藏弹出的警告,有两种方法,一种是使用CurrentDB.ExecutestrSQL,另一种是使用DoCmd.setwarningsfulse和DoCmd.setwarningtrue 编辑可能有用的链接

您可以在ms access中使用Google构建sql字符串,或使用其变体来获取更多源
查询是选择查询还是某种操作查询?它是生成表查询。我不熟悉SQL。这两行是什么意思?在何处指定要运行的查询。s=选择。。。进入…&从_我输入了一个错误,s=应该是strSQL=。现在看起来像是在MyTableName中选择MyFieldsName。。。。如果您完全不熟悉SQL,我不确定是否有一个非SQL方法来完成您想做的事情。我编辑了一些链接,如果您想学习如何使用SQL,这可能是学习一些基础知识的良好起点。好的,非常感谢。今天下午我将学习SQL,然后使用您的代码,希望我能够理解它。再次感谢!