如何根据来自 InputBox 的信息运行查询?

Posted

技术标签:

【中文标题】如何根据来自 InputBox 的信息运行查询?【英文标题】:How to run query based on information from InputBox? 【发布时间】:2013-06-24 13:27:38 【问题描述】:

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

【问题讨论】:

查询是SELECT 查询还是某种操作查询? 这是一个生成表查询。 【参考方案1】:

我不知道是否有其他方法可以做到这一点,但我将如何解决这个问题是通过创建 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)

编辑(可能有用的链接)

http://allenbrowne.com/tips.html Building SQL strings in Access/VBA 您可以通过 Google 搜索“在 ms 访问中构建 sql 字符串”或其他一些变体以获取更多来源

【讨论】:

我不熟悉 SQL。这两行是什么意思?我在哪里指定要运行的查询。 s= "SELECT ... INTO ..." _ & "FROM ..." _ 我打错了,s = 应该是strSQL = 。现在看起来就像SELECT MyFieldsName INTO MyTableName ...。如果您完全不熟悉 SQL,我不确定我是否有非 SQL 方法来做您想做的事情。如果您想学习如何使用 SQL,我编辑了一些链接,这些链接可能是学习一些基础知识的良好起点。 好的,非常感谢。我将用今天下午的时间学习 SQL,然后使用你的代码,希望我能弄明白。再次感谢!

以上是关于如何根据来自 InputBox 的信息运行查询?的主要内容,如果未能解决你的问题,请参考以下文章

使用 InputBox 向 MediaWiki 搜索查询添加额外的搜索文本

使 InputBox 中的部分文本在 Angular 7 中不可编辑

Google电子表格:将日期添加到由inputBox设置的日期,填充范围

excel将一个工作表根据条件拆分成多个工作簿,运行后,跳出类worksheet的delete方法无效

vbs 可以使用 InputBox 中的行创建 bat 文件吗?

Django:如何根据来自行的数据和来自另一个模型的数据将聚合字段添加到查询集中?