2012-07-10 83 views
1

我的设置:我有两个表:tblAuthors和tblBooks。 tblAuthors包括一个列表作者:Kurt Vonnegut,Frank Herbert,JK Rowling,John Nichols等。tblBooks包括书籍清单:Slaughter House Five,Cat's Craddle,Monkey House,Dune,Harry Potter,Milagro Beanfield War等。MS Access 2007关键字在窗体内搜索生成报告

tblBooks包含名为“摘录”的备忘录颜色。本节包含每一部小说中具有特殊意义或意义的一小段。

我也有两种形式:frmAuthor和frmBooks。 frmAuthor包括作者姓名以及一些与作者有关​​的特定信息,这些信息与这个问题(出生日期,出生地点,优先流派,灵感等)并不特别相关。 frmBooks包括作者姓名以及一些其他信息(出版公司,完成日期,流派)。

我目前使用过滤功能在我的表单中生成报告。我现在只是用它来找到简单的东西(作者姓名或流派)。我希望能够通过使用表格中的摘录部分来生成报告。我希望能够搜索一个常用词(例如上帝,蛇,马,教堂,房屋,道路......)或短语,以便在摘录之内。这样我就可以生成一个具有共同主题的报告。

请让我知道,如果我需要澄清这一点,我知道它可能看起来有点复杂。感谢您的时间。

回答

1

在我看来,要立足于报告tblBooksauthor_name(从frmAuthor)过滤和形式之一选择一个字(frmBooks?)。

所以,如果我正确地解释这一点,如果frmAuthor包括一个名为txtAuthor和frmBooks文本框包含一个名为txtSearch在用户输入从摘录领域的字的文本框,看看这样的查询将返回你想要的行。

SELECT * 
FROM tblBooks 
WHERE 
     author_name = Forms!frmAuthor!txtAuthor 
    AND excerpts Like '*' & Forms!frmBooks!txtSearch & '*'; 

如果该查询在替换实际控件名称后适合,则可以将其用作报表的记录源。 (但SELECT场名称,而不是SELECT *的实际列表)

另外,您可以使用未经过滤的查询作为报表的记录源,并通过喂养打开它是WHERE条款(无字WHERE)作为WhereCondition参数为DoCmd.OpenReport

Dim strWhere As String 
strWhere = "author_name = Forms!frmAuthor!txtAuthor" & _ 
    " AND excerpts Like '*' & Forms!frmBooks!txtSearch & '*'" 
Debug.Print strWhere 
DoCmd.OpenReport "YourReportName", WhereCondition:=strWhere