0

我想这是一个愚蠢的问题,但我在解决这个问题时遇到了问题。

我有两张表,其中包含用于制作报告的大量信息。

我有一个连接这两个表的查询。

相同的查询添加了两个简单的过滤器:日期范围和 ID 检查器。

报告应该使用具有特定 ID 的日期范围打印。

每次我需要更改查询数据范围时,我都需要手动编辑它并更改参数。

如何制作表单并将此信息传递给查询,这样我就不必每周手动更新查询?

我制作了一个带有两个日期字段的新表单,我需要一些代码在打开查询之前将此信息传递给查询,但DoCmd.OpenQuery Method不允许我传递任何信息。

理想情况下,我更喜欢使用 SQL 命令来设置查询然后打开它,这甚至可能吗?

4

4 回答 4

2

实际上,我经常使用这种方法:
在模块中声明变量并为每个简单地返回值的函数编写一个函数。然后您可以在查询设计器中使用函数调用(例如条件 = Between getMyValue1() AND getMyValue2())然后您可以在打开查询之前设置全局变量。(这对我来说比查询参数或直接引用查询中的表单字段效果更好。)

于 2012-10-19T15:00:03.600 回答
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”是否会起作用,尽管我认为如果你写得正确的话它应该会起作用。)

于 2012-10-19T14:46:57.233 回答
1

您还可以在查询中放置一个引用表单中字段的条件:

SELECT ... WHERE ID = [Forms]![FormName]![TextField]
于 2012-10-19T14:52:34.607 回答
0

你有两个选择。

  1. 不要将参数的值放在查询中。Access 将始终在每次执行查询时询问这些值。

  2. 使用 DATE() 函数获取当前日期并相应地计算周的开始和结束。这样,您将永远不必提供日期。

于 2012-10-19T14:47:35.113 回答