执行以下操作的正确方法是什么:
这是我在想的解决方案:
这样做的正确方法是什么>?
答案 0 :(得分:2)
查询可以引用作为输入参数的表单,该表单可以用作查询报告的结果。
通常,报表在没有打开表单的情况下运行时,会请求“表单字段”的值。
因此,一般情况下,您可以创建一个报告表单,您可以从中填写报告,其中包含报告所需的字段。
答案 1 :(得分:2)
我不同意这种做法,因为我不喜欢将报告与特定表格联系起来。
相反,我使用在报表的OnOpen事件中打开的对话框表单(如此处所示),并写入报表的Recordsource。
如果希望报表在不弹出对话框的情况下可以运行,可以使其成为OpenArgs的条件,或者说,如果已经设置了Filter属性(如果将DoCmd.OpenReport与WHERE一起使用会发生这种情况)参数)。
我喜欢使报表和对话框尽可能独立,我经常使用独立的类模块作为数据存储结构,并在OnOpen事件中进行检查。如果类模块的相关实例的公共变量为Nothing,则只运行报告,否则,从类模块实例的属性中提取数据并写入Recordsource。
通过这种方式,您可以使对话框表单和报表完全独立。两者都不需要彼此了解,但两者都将与类模块一起使用(尽管表单不需要知道关于类模块实例的任何信息)。
有关详情,请询问。
这是一个复杂的主题,我花了数年时间努力使应用程序尽可能保持可维护性。将UI对象彼此分离是实现更好的可重用性的因素之一,因此具有更好的可维护性和可扩展性。
(当然,你不需要使用类模块 - 你可以使用用户定义的类型,或数组或其他什么,但我喜欢具有相同结构的多个实例的能力,这是重点类模块)
答案 2 :(得分:1)
我在表单中创建了一个按钮,您可以在该表单中构建查询并在预览模式下打开报表(假设他们不想只是自动将其发送到默认打印机)。