如何运行从表单传递信息的查询?

时间:2012-10-19 14:40:44

标签: sql ms-access access-vba

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

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

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

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

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

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

如何创建表单并将此信息传递给查询,以便我不必每周手动更新查询?

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

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

4 个答案:

答案 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)

您有两种选择。

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

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