我最近已将Access后端转移到SQL Server,现在我知道如何将查询传递到SQL Server以使他进行计算。但这仅适用于仅包含表格的查询,例如:
Q_Test:
SELECT * FROM T_Test
但是如果我想将查询传递给包含另一个查询的服务器(并且此查询也包含其他一些查询),例如:
Q_Test3:
SELECT * FROM Q_Test2
INNER JOIN ..
Q_Test2:
Select * From Q_Test..
然后我认为它很笨拙并且让我很难将代码转换为“只有表”的SQL代码。是否有可能以巧妙的方式将包含子查询的查询传递给SQL Server?我已经在我的Access前端保存了一些查询,有些我通过VBA-Code打开了一些查询,还有一些是在Formsources of Forms中编写的,需要更改它们才能使其正常工作。对于仅包含表的查询,VBA代码确实有效。
我非常感谢任何帮助
答案 0 :(得分:1)
这里的主要问题是您正在尝试让SQL Server使用SQL Server甚至无法了解的Access构造。它对Access查询以及Access文件中包含的任何其他对象一无所知。
它只知道自己的对象 - 换句话说,您可以在SQL Server Management Studio的对象资源管理器中看到的是您可以在传递查询中“看到”的内容,因为这是您正在使用的环境。
您应该考虑传递查询允许您使用对Access来说是外来的SQL Server构造,例如存储过程或表值函数,或Access SQL方言中不支持的某些T-SQL语法。
考虑到这一点,您应该在SSMS中编写存储过程,对其进行测试,并在正确的时候从您的Access传递查询中调用它。如果需要可更新性(例如,将结果绑定到表单并编辑数据的能力),请考虑使用视图。请注意,对视图的合法更新有一些限制。
答案 1 :(得分:0)
请理解,传递查询就是这样做的。 SQL Server不知道您的Access应用程序是什么。
Access和ODBC驱动程序都知道这一点,因此如果您包含本地查询,表或函数,则所有处理都将在Access中进行。
传递查询只能处理服务器对象。 提示:但是,这些可能包含由Access应用程序填充的临时表。