访问动态传递查询

时间:2014-01-21 14:44:29

标签: sql ms-access access-vba pass-through

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

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

WHERE (((ID='380')

我希望380是代码,它将查看UserForm组合框,为我的数据库写一个返回值WHERE column = combobox.value的查询

我希望这是有道理的,让我知道是否有人知道如何使用它。 感谢。

3 个答案:

答案 0 :(得分:0)

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

干杯 -

答案 1 :(得分:0)

经过大量研究并进行了一些研究后,似乎只有服务器上的存储过程(我不能做)或创建字符串并将该字符串传递给传递查询是我的选择。 我将继续追求字符串选项,因为它似乎是我在这里约束的最佳选择。如果有人提出任何想法,那将有所帮助,让我知道。 感谢。

答案 2 :(得分:0)

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

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