2013-03-06 58 views
0

我在主報表中放置了兩個子報表。主要報告正常,但[Enter Year]參數出現兩次:每次子報告的查詢出現一次。這是正常的,我可以通過編寫代碼將它縮小到一個提示。子報表查詢中共享參數的單提示參數

但我認爲必須有一種方法來給一個命名參數一次,並且子報表查詢將選中它並使用它。我想要一個非代碼方法來做到這一點,因爲接下來我將爲具有共享參數的許多子報告做類似的收集報告。

我試過了: 1.將主窗體上的文本字段的控件源設置爲=[Enter Year]根本不會導致提示。 2.將主窗體的數據源設置爲SELECT * FROM <common table> WHERE year=[Enter Year]會導致提示並跳過子報表,但奇怪地導致子報表頁面無限重複。

這是Access 2003中

編輯: 1.以上不工作,因爲我想要的「提示重用」是在查詢中。如果它不是用作(標準「時間段」)過濾器的參數,我當然可以將文本字段設置爲父項的值。

現在我已經基於包含提示參數作爲列的簡單查詢的主要報告。但由於某些原因,Access表示對列(tmpYear)的引用是「可疑」/「明確」(我沒有運行英文訪問)。這可能是因爲在子報表查詢需要時,主報表查詢中的列未「完成」。

對我來說,這改變了問題:如何獲得一個主報告文本字段的值到的子報告查詢。

編輯2: 我現在明白了,有兩種選擇來解決這個問題: 一)編寫一個返回值提示一個全球性的功能,並使用該功能在查詢設計。 b)使用參數保留原始查詢,並將myQueryDef.Parameters(「」)設置爲提示的值。

...除b)仍然給出子查詢提示。

(我爲使這一問題零碎抱歉,但也許它會匹配其他人的發現這樣的旅程,如果你想我可以張貼新的短的問題,爲什麼b)不工作)

回答

2

這似乎是可能的(至少通過我的理解你的問題)。

你需要把你的參數在查詢背後的主報告並使其出來作爲現場:

SELECT YearParam:[Enter Year], <<Other Fields Here>> FROM <<Table NAME>> 

然後在主報告中,放置一個文本框在報告標題與字段名稱(YearParam)的控制源並命名文本框(例如txtYearParam)。現在

,每個子報表背後的查詢(或報告過濾器),使其使用以下語法看主報告文本框:

Reports!ReportName.txtYearParam 

我有測試此非常基本的報告和2個子報告,參數只出現一次並正確過濾。

+0

謝謝!明天會試試這個。我已經測試過這個,但沒那麼特別!和。組合。 – 2013-03-06 16:00:55

+0

是的,它必須位於查詢中,而不是作爲報表的控件源鍵入的查詢。我之前嘗試過(參見上文),但它重複查詢返回的每一行的頁面。所以我把SELECT變成了SELECT TOP 1,現在它工作。我也有Report!Reportname!txtYear。你對這些語法有很好的參考意見嗎?無論如何,感謝一堆 - 現在我可以做大報告。 :) – 2013-03-07 10:56:47

+0

很高興你的工作! :)當我嘗試這個時,我使用了一張表格,僅包含一條記錄,因此我沒有多頁面問題。解決這個問題的另一種方法可能是將子報表放在報表頁眉/頁腳中,但顯然取決於它是否適合您的報表佈局。關於語法,[this](http://blogs.office.com/b/microsoft-access/archive/2008/05/30/dot-or-bang.aspx)是很好的解釋。 – RichardC 2013-03-07 13:38:09