如何使用查询作为MS Access 2007中的报表的来源?

时间:2011-06-24 05:49:17

标签: ms-access ms-access-2007 report

我在MS Access中执行了以下操作:我创建了一个具有组合框和按钮的表单。您从那里选择一个选项,然后单击按钮,它应该打开一个报告。现在,我编写了一个查询,从表中选择几个字段,在where子句中,将条件赋予where name=str(combo1.value),并将报告源指定为此查询。现在,当我选择值并单击按钮时,它会打开一个空白报告。如何才能使其仅加载那些特定值?

我没有在任何地方保存组合框值。它说它会记住以后使用的价值。我没有保存它,我做对了吗?我应该怎么做才能使这项工作?请帮帮我!

编辑:组合框正在使用表X中第1列的值。我没有将值绑定到任何字段,而是使用“记住以后使用的值”选项提供。组合框基本上是酒店列表,报告是入住所选酒店的人员列表。当我输入字段的ID(如X中所定义)时,它可以工作。但事实是,它应该是指酒店的名称,而不是ID,我应该在一个要求它的弹出窗口中输入。我该怎么办?

编辑2:查询如下:
SELECT Table_1.Hotel_Name, Table_2.Name_of_Delegate, Table_2.Address, Table_2.City, Table_2.Center, Table_2.Spouse_Present, Table_2.No_of_Children, Table_2.No_of_Guests, Table_2.No_of_Rooms FROM Table_1 INNER JOIN Table_2 ON Table_1.ID=Table_2.Hotel_of_Residence WHERE Table_1.Hotel_Name=FormName.Combo7.Text;

当我点击按钮(打开报告)时,它会在弹出框中询问酒店的名称。我怎么能避免这个?我做错了什么?

2 个答案:

答案 0 :(得分:3)

您可以将 WhereCondition DoCmd.OpenReport Method一起用作报告记录源的“动态WHERE子句”。在命令按钮的单击事件中使用类似的内容打开报告。

DoCmd.OpenReport "YourReport", , , "[name]=" & Me.combo1

从报告的查询中删除您添加的WHERE子句where name=str(combo1.value)

我用方括号括起 name ,因为 name 是一个保留字。见Problem names and reserved words in Access

修改:在评论中,您对组合框说了这个:

“行源是SELECT [Table_Name]。[ID],[Table_Name]。[Name] FROM [Table_Name] ;. Bound Column是1(我假设显示了我希望在组合框中显示的名称。) “

当您引用组合框的值时,该值是“绑定列”的值。所以在你的情况下,绑定列是1,这意味着组合值将是[Table_Name]。[ID]。但是,您希望根据组合的[名称]列打开报表。因此,将组合的绑定列从1更改为2.

答案 1 :(得分:1)

要使用组合框的值打开报告,请在报告查询中执行以下操作:

SELECT fields
FROM table
WHERE YourValue = [Form]![FormName]![ComboBox Value]

您必须指定表单的名称以及值,以便报表查询知道该值。希望这可以帮助。