-1

您将如何在 Microsoft Access 中创建一个只能由某些字段搜索并由表单上的几个(必要的)文本框和复选框控制的数据库,以便易于使用 - 没有困难的查询?

Example: You have several text boxes and several corresponding check boxes on a form, and when the check box next to the text box is checked, the text box is enabled and you can then search by what is entered into said text box

(其实我已经知道了,只是在玩stackoverflow jeopardy,我问一个问题我知道答案只是为了增加世界的编码知识!答案在大约5分钟内出现)

4

5 回答 5

1

我自己的解决方案是在表单的标题部分为我希望能够过滤的每个列(通常是所有...)添加一个“过滤器”控件。每次更新这样的“过滤器”控件时,将运行一个过程来更新表单的活动过滤器,使用 Access VBA 中可用的“BuildCriteria”函数。

因此,当我*cable*在采购订单描述列顶部的“过滤器”中键入“”时,“WHERE PODescription IS LIKE”*cable*会自动添加到 MyForm.filter 属性中......

有些人会反对过滤由多个基础表组成的记录源可能会变得非常棘手。这是正确的。因此,根据我的说法,最好的解决方案是始终(我是认真的!)使用平面表或视图(Access 中的“SELECT”查询)作为表单的记录源。这将使您的生活更轻松!

一旦你确信这一点,你甚至可以想到一个小模块,它会自动将“过滤器”控件和相关过程添加到表单中。您将获得真正的用户友好的客户端界面。

于 2008-09-16T14:18:23.623 回答
0

对于一个模糊的问题,我只能回答打开 MS Access,然后单击鼠标几次。

再三考虑:
使用“OpenForm”方法的“WhereCondition”参数

于 2008-09-16T14:05:59.677 回答
0

在启动时,您需要显示一个表单并禁用其他菜单等。这样您的用户只能看到您有限的功能并且不能直接打开表格等。

这本书的摘录,Real World Microsoft Access Database Protection and Security,应该很有启发性。

于 2008-09-16T14:07:28.097 回答
0

这实际上是一个相当大的话题,并且充满了各种潜在的问题。大多数关于 Access 的中级到高级书籍都会有一些讨论“按表单查询”的部分,其中您有一个未绑定的表单,允许用户选择某些条件,并且在执行时,编写即时 SQL 以返回匹配数据。

除了平面的单表数据结构之外,这不是一项简单的任务,因为 SQL 的 FROM 子句依赖于 WHERE 子句中查询的表。

我为客户创建的应用程序中的一些 QBF 表单示例:

  1. 查询4个基础表
  2. 查询平面单表
  3. 查询3个基础表
  4. 查询6个底层表
  5. 查询2个基础表

第一个由一个类模块驱动,该类模块具有反映在此表单中选择的标准的属性,并且具有编写 FROM 和 WHERE 子句的方法。这使得添加其他字段变得非常容易(只要这些字段不是来自已包含的表之外的表)。

该过程中最复杂的部分是编写 FROM 子句,因为您必须具有适当的连接类型并且只包括 SELECT 子句或 WHERE 子句中的表。如果您包含其他任何内容,您的查询速度会大大降低(特别是如果您有任何外部连接)。

但这是一个大主题,没有灵丹妙药的解决方案——相反,必须为每个特定的应用程序创建类似的东西。与用户一起彻底测试它也很重要,因为对于您(开发人员)来说完全清楚和可以理解的内容通常对最终用户来说非常神秘。

但这是一个不仅仅适用于 QBF 的原则!

于 2008-09-16T17:17:57.950 回答
0

如果功能非常有限和/或专门化,那么 SQL 数据库可能无论如何都会过度杀伤,例如在本地缓存所有数据组合,甚至在内存中,并根据表单上的复选框显示一个。以前,您可以从表中撤消权限并仅在以规定方式查询数据的 VIEWs/PROC 上授予它们,但是安全性已从 MS Access 2007 中删除,因此您现在可以真正阻止用户绕过您的简单应用程序,例如、Excel 并以他们喜欢的任何方式查询数据……但这不是企业数据库的重点吗?;-)

于 2008-10-01T08:44:51.237 回答