如何在MS Access 2007中将查询用作报表的源



我在MS Access中做了以下操作:我制作了一个带有组合框和按钮的表单。你从中选择一个选项,然后点击按钮,它就会打开一个报告。现在,我编写了一个从表中选择几个字段的查询,在where子句中,将条件指定为where name=str(combo1.value),并将报告源指定为该查询。现在,当我选择值并单击按钮时,它会打开一个空白报告。如何使它只加载那些特定的值?

我不会在任何地方保存组合框值。它说它会记住这个值,以便以后使用。我不保存它是不是做了正确的事情?我该怎么做才能让它发挥作用?请帮帮我!

编辑:组合框使用的是表X中第1列的值。我没有将值绑定到任何字段,而是使用提供的"记住值以备将来使用"选项。组合框本质上是一个酒店列表,而报告是住在所选酒店的人员列表。当我放置字段的ID(如X中定义的)时,它就起作用了。但问题是,它应该指的是酒店的名称,而不是ID,我应该在弹出窗口中输入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;

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

您可以将WhereCondition与DoCmd.OpenReport方法一起用作报表记录源的"动态WHERE子句"。在打开报告的命令按钮的单击事件中使用类似的方法。

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

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

我用方括号把name括起来,因为name是一个保留字。请参阅Access 中的问题名称和保留字

编辑:在一条评论中,你这样评价组合框:

"行源是SELECT[Table_Name]。[ID],[Table_Name]。[Name]FROM[Table_Name];。绑定列是1(我认为它显示了我希望在组合框中显示的名称。)"

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

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

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

您必须指定窗体的名称和值,以便报表查询知道该值。希望这能有所帮助。

最新更新