如何使用 sql-server 后端处理访问中的表单引用查询
Posted
技术标签:
【中文标题】如何使用 sql-server 后端处理访问中的表单引用查询【英文标题】:howto handle form referencing queries in access with a sql-server backend 【发布时间】:2011-01-20 21:09:46 【问题描述】:我将 ms-access 2003 数据库升级为 sql-server 2008,但不知道如何处理需要参数的查询。
例如有一个查询,在其 where 子句中,通过 Forms!my_form!aField 引用了一个表单字段。 如何将“aField”的值传递给 ms-sqlserver。 到目前为止,我唯一的想法是使用 VBA 修改记录源并将值附加到那里。
另外,如果查询没有引用表单但绑定到一个非常大的表或返回大量数据的查询,建议减少服务器返回的记录数 - 我如何确保这一点。
任何帮助表示赞赏。
谢谢, 拉蒙
【问题讨论】:
它应该可以正常工作,因为(可能)您正在使用链接表,因此 Access 表达式服务仍然能够在将 SQL 移交给服务器进行检索之前解析控件引用。我强烈建议为控件声明一个参数,以便让 Jet/ACE 查询优化器尽可能地完成最佳工作。一般来说,我从不在表单/报告的记录源中或保存的 QueryDefs 中存储控件引用,所以这不是我在大型应用程序中遇到的问题。 当然,链接表确实有效。但通常所有数据都从服务器传回表单并通过访问进行过滤,这是您并不真正想要的。您是否有一个方便的链接,其中描述了控件的参数声明? 这是标准的SQL,但是你可以通过使用QBE接口声明参数来弄清楚,然后看看写了什么SQL。 【参考方案1】:从技术上讲,当您升级数据库时,任何使用迁移表的表单和查询都应该自动更新。您只需确保它们在前端被正确引用,并且 SQL-Server 透明地管理后端的数据。
将表单绑定到表通常不是一个好主意 - 因为可以编写查询来为您提供最窄的有用数据显示,而无需提取表中的每条记录。当然,您可以使用过滤器,但是您已经轮询了数据库中的所有记录,您只是改变了您的视图。
【讨论】:
感谢您的回答。抱歉,我交替使用了表、视图和查询。查询仍然可以返回大量数据,但我不知道如何在不通过 vba 更改记录源的情况下将参数传递给位于服务器端的查询。 那么,您想在不更改表单上的记录源属性的情况下动态重写查询吗?我很困惑。 我想添加一个 where 子句而不使用 vba 来更改记录源。我发现在使用 ADP 时可以使用表单的属性对话框来定义输入参数。我正在寻找一种使用 MBD 来做同样事情的方法。以上是关于如何使用 sql-server 后端处理访问中的表单引用查询的主要内容,如果未能解决你的问题,请参考以下文章
TSQL / SQL-SERVER:如何在具有主键的快照复制中查找所有表
访问不允许SQL-Server列中的空值的INSERT或UPDATE(访问运行时错误3162)