我想这是一个愚蠢的问题,但我在解决这个问题时遇到了问题。
我有两张表,其中包含用于制作报告的大量信息。
我有一个连接这两个表的查询。
相同的查询添加了两个简单的过滤器:日期范围和ID检查器。
报告应打印出具有特定ID的日期范围。
每当我需要更改查询数据范围时,我需要手动编辑它并更改参数。
如何创建表单并将此信息传递给查询,以便我不必每周手动更新查询?
我创建了一个包含两个日期字段的新表单,我需要一些代码才能在打开它之前将此信息传递给查询,但DoCmd.OpenQuery Method
不允许我传递任何信息。
理想情况下,我更喜欢使用SQL命令设置查询然后打开它,这是否可能?
答案 0 :(得分:2)
实际上,我经常使用这种方法:
在Module中声明变量,并为每个只返回值的函数编写一个函数。然后,您可以在Query-Designer中使用函数调用(例如criteria = Between getMyValue1() AND getMyValue2()
)
然后,您可以在打开查询之前设置全局变量。
(这比查询参数或直接引用查询中的表单字段更适合我。)
答案 1 :(得分:1)
使用过滤器打开报告:
Dim sWhere as String
sWhere = "Tbl_Swift.Data >= #10/01/2012# AND Tbl_Swift.Data <= #10/10/2012#"
DoCmd.OpenReport "rptMyReportName", acViewPreview, ,sWhere
(我不确定“BETWEEN”是否会起作用,虽然我认为如果你能正确地写它,应该这样做。)
答案 2 :(得分:1)
您还可以在查询中添加一个引用表单中字段的条件:
SELECT ... WHERE ID = [Forms]![FormName]![TextField]
答案 3 :(得分:0)
您有两种选择。
不要在查询中放置参数值。访问将始终在每次执行查询时询问这些值。
使用DATE()函数获取当前日期并相应地计算周开始和结束。这样,您就不必提供日期。