基于查询的表单,该查询从该表单上的文本框中获取参数

时间:2011-01-11 14:12:53

标签: ms-access

最终目的是允许过滤表单(表单上还有一个“刷新”按钮)。它现在对我很有用,但我之前没有看到过这种参数查询的使用。我知道我可以使用其他方法(访问标准功能,在vba中使用Filter / FilterOn属性),但从技术上讲,有没有理由不这样做?

2 个答案:

答案 0 :(得分:0)

好吧,我想你可以编写一个VBA函数来根据表单中的未绑定文本框从数据库中重新查询,尽管过滤器更适合性能原因。我可以想到您可能不想重新查询的唯一原因是,如果您在具有大量并发用户的慢速网络上从网络驱动器上的MDB文件中提取大量数据;仅仅是因为性能会受到严重打击。我可能是错的

答案 1 :(得分:0)

我不确定我理解你的问题,但参数化表单的SQL以引用表单上的过滤条件控件意味着你必须跳过箍来显示除了在所有参数化上过滤的数据之外的任何内容字段。

requery异议对我来说没有意义,因为你必须根据控件中的值来重新查询表单,除非你正在编写记录源而不是重新查询它。如果您正在更改表单的记录源,那么我认为没有理由使用参数引用用于键入条件的表单控件。

设置表单的Filter属性是迄今为止最容易实现的方法,但它假设您已经开始使用记录源来显示您要从中选择的所有记录,这可能效率低下,或者只是一个坏的设计。

所以,基本上,我的建议是根本不使用参数,而是每次动态编写SQL并设置表单的记录源。

顺便说一句,为了避免显示空白表单,您可以使用TOP 1查询的技巧:

  SELECT TOP 1 Null As Field1, Null As Field2
  FROM MySmallestTable

在所有字段中都有一条带有Null的记录,因此绑定的控件不会显示错误消息。它还使表单无法编辑,而无需更改表单的编辑属性。