【发布时间】:2014-08-31 01:36:48
【问题描述】:
我有一个参数化查询 GET_CUSTOMER:
SELECT * FROM Customer WHERE id = [customer_id]
我想从另一个查询中调用这个查询并传递一个参数:
SELECT * FROM GET_CUSTOMER(123)
请注意,上面的代码无效,它是为了让您了解我正在尝试做什么。是否可以在 MS Access 中执行此操作?
更新 1:
例如,我发布的查询。实际的查询要复杂得多。我知道我可以使用表连接,但在我的特定情况下,如果我可以在其他查询(也已参数化)中运行参数化查询会容易得多。我无法使用访问表单,因为我在 .NET 应用程序中使用访问权限。
【问题讨论】:
-
为什么?两个查询将返回相同的结果?我的意思是答案是肯定的。如果您打开一个新查询并执行
Select GET_CUSTOMER.* FROM GET_CUSTOMER,它仍然会询问id的参数。所以你可以把它当作原始查询一样传递。 -
您可能更想加入表格。
-
请始终包含所有标签。例如,除了我的编辑之外,您还应该包括 .net 的特定风格。
-
我没有添加 .NET,因为它与我的具体问题无关。我的问题是将参数传递给 Access 中另一个查询的查询。
-
@andr111:Access 中的 QueryDef 对象可以看到构建它们的查询的参数。假设 Query2 是位于 GET_CUSTOMER 之上的查询;你可以编写类似这样的代码:QueryDefs("Query2").Parameters("customer_id") = 123,即使参数不属于顶层。因此,底层查询的参数可以被更高级别的参数访问(在我的脑海中,我不知道如果查询堆栈中有相同名称的参数会发生什么;我认为它们都是给定的设置参数后相同的值)。所以是的,可以做到。