2017-03-07 76 views
1

我在Access 2013中有一個報告,它將查詢中的記錄分組並將每個組打印到單獨的頁面。有沒有辦法在VBA中找出每個記錄將打印在哪個頁面上?在哪個頁面上打印Access報告中的記錄?

編輯 - 添加這些細節從評論:
該報告將從1-5頁的任何東西。我們將在每頁上打印的參考文獻中包含頁碼,例如「CN001-x」其中x將是頁碼。然後我們將該值存回數據庫的表格中。

該報表將分組應用於數據,並在每個組之後創建一個新頁面,每個頁面將具有可變數量的記錄。

+0

有很多變化可能會改變/決定一個記錄最終會出現在哪個頁面上。報告通常有多少頁?你能否提供查詢與分組?最後,爲什麼你需要知道一個記錄在哪個頁面上?所有這些都可以幫助我確定一個合適的解決方案。 –

+0

該報告將從1-5頁開始。我們將在每頁上打印的參考文獻中包含頁碼,例如「CN001-x」其中x將是頁碼。然後我們將該值存回數據庫的表格中。 – ChipsLetten

+0

每次記錄都是一樣的高度嗎?更好的方法是,第一個記錄的高度是否與報告中的第23條記錄一樣高? –

回答

0

通過使用一個使用Count()的複雜公式,您可以計算記錄將登陸的頁面。例如,如果第一頁上有二十條記錄,那麼您會知道第二十一條記錄會在第二頁上。由於我看不到你的報告或代碼,所以不得不解釋它。

創建一個計算報告中記錄的公式,然後在比較中使用該公式來查看該數字是否落在1-20範圍內。如果是這樣,請將其賦值爲1.然後,只需簡單地將該字段與您需要的字段的其他部分連接起來,並且您應該都很好。只需執行下面的操作即可獲得您認爲需要的迭代次數。如果你知道你的頁數永遠不會超過7,那麼我會停在那裏。

IF Count(Field1) <= 20 THEN 
    1 
ELSE IF Count(Field1) > 20 AND Count(Field1) <=40 THEN 
    2 
Else 3 
End IF 
+0

謝謝,但報告是由組完成的,每個頁面將有不同數量的記錄。我想我們需要更改底層查詢。 – ChipsLetten

+0

或者您可以在每個頁面上重複使用非常小的標題部分。並且每次渲染都會將變量加1。這樣就可以模擬頁碼。然後在連接公式中使用這個變量 –

+0

這聽起來像個好主意。你知道我將如何循環瀏覽那些頁面上顯示的記錄嗎? – ChipsLetten