我已經重寫了標題和描述,因爲最後一個沒有多大意義。微軟訪問報告 - 子報告進行2頁,但訪問認爲它是一個?
基本上,我有一個顯示業務細節的報告。其中的一些細節包括:
- 公司名稱
- 地址
- 文件
- 客戶
當報告的格式(打印視圖)商業名稱和它的對應關係積水的頁碼被添加到表格中(BusinessPage)。這樣做的代碼放置在第一組頭的「對格式」事件,我列出了下面的代碼:
Dim RST As DAO.Recordset
Set RST = CurrentDb.OpenRecordset("BusinessPage", dbOpenTable)
RST.AddNew
RST![Business Name] = BUSName
RST![Business Page] = Me.Page
RST.Update
RST.Close
CurrentDb.Execute "SELECT DISTINCT * INTO t_temp FROM BusinessPage"
CurrentDb.Execute "DELETE FROM BusinessPage"
CurrentDb.Execute "INSERT INTO BusinessPage SELECT * FROM t_temp"
CurrentDb.Execute "DROP TABLE t_temp"
表將是這個樣子:
Business Name Page No
Business 1 3
Business 2 4
Business 3 6 'This indicates that Business 2 spans over two pages as page 5 is skipped'
Business 4 7
在報告標題,我有兩件事情:
- 封面頁
- 一個在DEX Sub報表/頁
索引頁(分報告)需要從表(BusinessPage),並列出了所有在報告中的企業,與頁碼一起,他們開始上的信息。
現在你已經知道這是如何工作的,這裏是我的問題: 如果子報告只佔用一頁,那麼子報告可以正常工作。我遇到的問題是,子報告列出了太多記錄,並將其記錄在第二頁上。出於某種原因,訪問仍然認爲子報表在一個頁面上,即使它創建了另一個頁面。儘管它認爲,包含代碼的頁腳([頁面])顯示正確。但是,顯示頁面總數([Pages])的代碼是錯誤的。在報告的末尾,頁腳會說這樣的事情: 第50頁49
的另一個問題我有是,當子報告超過一頁被添加到表中的信息是錯誤的。所添加的信息是假設子報告仍在一頁上。
例如,當子報告佔用一個頁面:
Page 1: Cover Page
Page 2: Sub Report/Index
Page 3: Business 1
小組報告將正確顯示:
Business 1 Page 3
當子報告佔用2 pages:
Page 1: Cover Page
Page 2: Sub Report/Index
Page 3: Sub Report/Index
Page 4: Business 1
子報告/索引頁仍會顯示:
Business 1 Page 3
而應該顯示其爲:
Business 1 Page 4
有誰知道如何任何想法我能糾正這個?我有一種感覺,可能是因爲子報告在報告標題中(但我需要它,因爲它只會在報告開始時顯示一次)。是否有另一種方法來創建一個二級報告頭來測試這個理論?
讓我知道是否有人想到任何其他解決方案!
編輯: 我將子報告移入它自己的組/報頭,遠離報頭。 這並沒有改變任何東西,訪問仍然認爲它顯示在一頁上,即使它不是。由於設計視圖中的子報告的大小,我還有另一種預感,即訪問認爲它在一個頁面上?在引入數據之前,設計視圖中的子報告將適合於一頁,這是否會成爲問題?我將如何去解決這個問題?
我在想,也許if語句來決定子報告證明有多大,如果它的2頁的長度,然後修改密碼成爲:
RST![Business page] = Me.Page + 1
這仍然是相當僞劣的修復,雖然,我不知道我怎麼會去寫if語句來計算網頁的
我不知道你是如何設法弄清楚的,但你的答案完美地解釋了它。在執行代碼之前訪問格式化報告,因此在「開格式」階段嘗試一次性完成所有操作都不起作用。首先填充索引表,然後在報告的「打開格式」期間顯示數字修復它。謝謝! – Alex
@Alex:我有你的[上一個問題]的元信息(http://stackoverflow.com/questions/35699697/microsoft-access-report-how-to-cycle-through-all-pages-of-a-report -in打印-VI)。 - > – Andre