【问题标题】:Access Dynamic Pass-through Query访问动态直通查询
【发布时间】:2019-01-17 07:25:59
【问题描述】:

我一直在寻找,但没有找到一个好的答案。 我发现我可以在 VBA 过程中生成代码并从那里运行它,但是,我正在研究其他人的设计并且不想对其进行太多更改。

在传递查询的一部分中,我们有这样的内容:

WHERE (((ID='380')

我希望 380 是查看用户窗体组合框的代码,为我的数据库编写一个返回值 WHERE column = combobox.value 的查询

我希望这是有道理的,如果有人知道如何使用它,请告诉我。 谢谢。

【问题讨论】:

    标签: sql ms-access vba pass-through


    【解决方案1】:

    您可以设置组合框将所选值放入单元格中,然后通过参数将查询链接到该单元格的值。

    干杯-

    【讨论】:

    • 一个单元格?你的意思是一个字段-?此外,由于直通查询会将整个查询发送到另一台服务器,然后执行服务器端并中继结果,这是否可行,只需两次通信而不是来回通信?参数是什么意思?
    • 搜索“excel添加参数传递查询”。试试这个:office.microsoft.com/en-us/excel-help/…
    • 谢谢,我正在研究参数,因为它们可能与访问的传递查询有关。我希望我能找到一些东西。
    • 我给你的那个链接几乎可以做到,我想。干杯
    【解决方案2】:

    在环顾四周并进行了一些研究之后,似乎只有服务器上的存储过程(我不能这样做)或创建一个字符串并将该字符串传递给传递查询是我的选择。 我将追求字符串选项,因为它似乎是我的限制条件的最佳选择。如果有人后来提出任何想法会有所帮助,请告诉我。 谢谢。

    【讨论】:

      【解决方案3】:

      一种方法是将模板查询存储在传递查询中,例如:

      select * from table where ID = [ID]
      

      然后使用 VBA 读取查询,替换 ID,将其写出到另一个准备好的查询中,然后执行它。像这样的:

      Sub zzz()
      
          Dim SQL As String
      
          With CurrentDb
              SQL = .QueryDefs("PassThruQueryTemplate").SQL
              .QueryDefs("PassThruQuery").SQL = Replace(SQL, "[ID]", "380")
              .Execute "PassThruQuery"
          End With
      
      End Sub
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多