0

在我的表单上,我有一个用户可以点击的按钮。然后它将通过 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 是日期/时间字段。

4

1 回答 1

0

我不知道是否有不同的方法可以做到这一点,但我将如何解决这个问题是通过创建 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 我相信只运行操作查询,例如UPDATEDELETE。普通SELECT不是操作查询。
  • 如果你想隐藏弹出的警告,有两种方法可以做到,一种是使用CurrentDB.Execute(strSQL),或者使用DoCmd.SetWarnings(False)DoCmd.SetWarnings(True)

编辑(可能有用的链接)

于 2013-06-24T13:56:51.290 回答