ACCESS中的事件序列

时间:2010-06-09 17:46:43

标签: sql ms-access access-vba

执行以下操作的正确方法是什么:

  1. 将DATE作为用户输入
  2. 运行查询
  3. 生成使用查询的报告
  4. 这是我在想的解决方案:

    1. 有一个接受用户输入的表单
    2. 运行查询
    3. 打开报告
    4. 这样做的正确方法是什么>?

3 个答案:

答案 0 :(得分:2)

查询可以引用作为输入参数的表单,该表单可以用作查询报告的结果。

  • 所以有一个带有日期用户的表单 输入
  • 放置一个可以打开的按钮 报告。
  • 报告应该使用a 查询/嵌入式sql,即使用 表格中的字段作为输入。

通常,报表在没有打开表单的情况下运行时,会请求“表单字段”的值。

因此,一般情况下,您可以创建一个报告表单,您可以从中填写报告,其中包含报告所需的字段。

答案 1 :(得分:2)

我不同意这种做法,因为我不喜欢将报告与特定表格联系起来。

相反,我使用在报表的OnOpen事件中打开的对话框表单(如此处所示),并写入报表的Recordsource。

如果希望报表在不弹出对话框的情况下可以运行,可以使其成为OpenArgs的条件,或者说,如果已经设置了Filter属性(如果将DoCmd.OpenReport与WHERE一起使用会发生这种情况)参数)。

我喜欢使报表和对话框尽可能独立,我经常使用独立的类模块作为数据存储结构,并在OnOpen事件中进行检查。如果类模块的相关实例的公共变量为Nothing,则只运行报告,否则,从类模块实例的属性中提取数据并写入Recordsource。

通过这种方式,您可以使对话框表单和报表完全独立。两者都不需要彼此了解,但两者都将与类模块一起使用(尽管表单不需要知道关于类模块实例的任何信息)。

有关详情,请询问。

这是一个复杂的主题,我花了数年时间努力使应用程序尽可能保持可维护性。将UI对象彼此分离是实现更好的可重用性的因素之一,因此具有更好的可维护性和可扩展性。

(当然,你不需要使用类模块 - 你可以使用用户定义的类型,或数组或其他什么,但我喜欢具有相同结构的多个实例的能力,这是重点类模块)

答案 2 :(得分:1)

我在表单中创建了一个按钮,您可以在该表单中构建查询并在预览模式下打开报表(假设他们不想只是自动将其发送到默认打印机)。