我可以从Microsoft Access调用SQL Server的用户定义函数

时间:2010-11-10 22:21:31

标签: sql-server ms-access user-defined-functions

我正在尝试将Access应用程序升迁到Access FE和SQL Server数据库BE。

我遇到的一个问题是,在客户端执行带有“过滤参数”的查询,并要求所有行都从服务器发送到客户端。

示例:

SELECT * FROM MyTable WHERE MyId = Forms!MyForm!MyControl.Value;

此查询将要求MyTable中的所有行从SQL Server发送到最终将执行WHERE子句的Access。

我已经阅读过关于SQL Server的用户定义函数的内容,看起来它可以为我工作,只要我能从Access中调用它们,就像我在SQL Server查询中一样。

我可以这样做吗?

3 个答案:

答案 0 :(得分:3)

MyID是否被编入索引?如果是这样,则Access不应该从服务器拖动整个表。

但是,我不确定你从哪里获得标准,因为那不是表单过滤器要发送的SQL。或者甚至是保存的QueryDef,其中包含对表单上的控件的硬连线引用。

尝试删除.Value(它是多余的,因为它是默认属性)。

此外,如果它是已保存的QueryDef,请尝试将控件引用定义为参数,即PARAMETERS Forms!MyForm!MyControl Long;

基本上,您报告的任何内容都不是使用ODBC链接表到SQL Server的标准Access行为。如果是这样的话,Access就会升级,而且根本不会。

答案 1 :(得分:0)

应该可以通过“传递”查询。

答案 2 :(得分:0)

我同意,传递查询会执行此操作,但这将在应用程序窗口中留下持久查询对象。

使用ADO记录集和连接对象可以将过滤后的结果返回到记录集中,但是您需要编写与Access SQL不同的TSQL语句。