【问题标题】:Variable Inside the Access Pass Through Query访问传递查询中的变量
【发布时间】:2018-11-09 16:21:50
【问题描述】:

我在我的程序中设置了一个全局变量。

public this_is_global_var as integer

this_is_global_var=1

然后我在传递查询中使用该变量

Select * from oracle_table where id=this_is_global_var ;

但错误显示“this_is_global_var: invalid identifier”

请帮忙。谢谢。

【问题讨论】:

    标签: vba ms-access pass-through


    【解决方案1】:

    您可以在查询定义中为变量定义占位符并在执行前替换它。

    qdfTemp.SQL = Replace(qdfMyQuery.SQL, "[this_is_global_var]", str(this_is_global_var))
    

    然后执行临时查询。原始查询将保持不变。

    【讨论】:

    • 这解决了我的问题。到目前为止,我认为这是最好的方法。虽然我需要额外的努力,因为我有多个查询。谢谢@Sergey S。
    【解决方案2】:

    如果您想在查询中使用变量,则必须将其写为变量:

    "SELECT * FROM oracle_table WHERE id = " & this_is_global_var
    

    【讨论】:

    • 谢谢@Strawberryshrub。我已经尝试过了,它的工作原理。但问题是我的查询很长,很难定义为变量。这就是为什么我想直接将我的变量注入到我的查询中。
    • 如果它太长而且不是很清楚,您也可以使用 Access QueryDef
    • @ktaro 我看到你得到了另一个有效的答案,但没有答案包括解释。您显然误解了“通过​​”查询是什么。传递查询的全部目的是将 SQL 语句发送到另一个执行查询的服务器。服务器无法了解 Access 变量并获取其数据。这两个答案都演示了如何将变量 value文本版本 替换为文本语句——变量名称实际上从未发送到服务器。
    • @Strawberryshrub QueryDef 在这里不会提供太多帮助,因为DAO.QueryDef 对象无法处理传递查询的参数。如果使用 QueryDef,它仍然需要将显式值注入到文本语句中,因此实际上只会使过程复杂化。但是,ADODB.Command 对象可以接受并正确处理发送到远程服务器的参数,但在 Access 中使用 ADO 会带来其自身的复杂性。见stackoverflow.com/questions/24248870/…
    猜你喜欢
    • 1970-01-01
    • 2019-12-22
    • 1970-01-01
    • 2021-11-24
    • 1970-01-01
    • 2013-04-06
    • 2015-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多