設(shè)為首頁收藏本站Access中國

Office中國論壇/Access中國論壇

 找回密碼
 注冊

QQ登錄

只需一步,快速開始

返回列表 發(fā)新帖
查看: 86642|回復(fù): 202
打印 上一主題 下一主題

[報表] 【源碼】報表分頁總計及補空行示例

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2010-9-18 09:00:17 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 紅塵如煙 于 2010-9-18 19:17 編輯

Access的報表存在一個問題,無論你在設(shè)計視圖中將控件對的看上去多么整齊,但預(yù)覽的時候通過控件邊框顯示出來的表格線條仍然會出現(xiàn)錯位現(xiàn)象,而通過報表的Line方法來畫表格就沒有這個問題了,而且在不用到臨時表的情況下,畫表格也是補空行的好辦法。

  1. '=======================================================================
  2. '函數(shù)名稱: ReportSheet
  3. '功能描述: 簡單報表中用來畫表格并實現(xiàn)補空行,用于打印單據(jù)類每頁樣式固定的報表
  4. '輸入?yún)?shù): rpt               必需的,報表對象,使用時用Me關(guān)鍵字引用
  5. '          RowsOfPage        必需的,每頁要顯示的記錄行數(shù)
  6. '          Style             可選的,表格樣式,0為網(wǎng)格式,1為橫格式,2為豎格式
  7. '          HasColumnHeader   可選的,是否對列標(biāo)題同樣畫表格
  8. '返回參數(shù): 無
  9. '使用示例: 在窗體的Page事件中調(diào)用: ReportSheet Me,30
  10. '相關(guān)調(diào)用:
  11. '使用注意: 主體節(jié)中的控件必須是索引從左到右,可以通過選中主體節(jié)中的所有控件,然后剪切再粘貼的操作來處理
  12. '兼 容 性:
  13. '參考資料:
  14. '作   者: 紅塵如煙
  15. '創(chuàng)建日期: 2010-9-17
  16. '=======================================================================
  17. Public Function ReportSheet(rpt As Report, _
  18. ByVal RowsOfPage As Integer, _
  19. Optional ByVal Style As Integer = 0, _
  20. Optional ByVal HasColumnHeader As Boolean = True)
  21. Dim intI As Integer
  22. Dim lngTop As Long '表格上邊距,即報表頁眉的高度
  23. Dim lngBottom As Long '表格下邊距,報表頁眉的高度 +主體節(jié)高度×每頁要顯示的記錄數(shù)
  24. Dim lngLeft As Long '表格左邊距,第一個控件的左邊距
  25. Dim lngRight As Long '表格右邊距,最后一個控件的左邊距+最后一個控件的寬度
  26. Dim lngRowHeight As Long '行高,即主體節(jié)高度
  27. Dim lngMaxIndex As Integer '主體節(jié)控件最大索引值

  28. lngRowHeight = rpt.Section(acDetail).Height
  29. lngMaxIndex = rpt.Section(acDetail).Controls.Count - 1
  30. lngTop = rpt.Section(acPageHeader).Height
  31. lngBottom = lngTop + lngRowHeight * (RowsOfPage)
  32. lngLeft = rpt.Section(acDetail).Controls(0).Left
  33. lngRight = rpt.Section(acDetail).Controls(lngMaxIndex).Left + rpt.Section(acDetail).Controls(lngMaxIndex).Width

  34. If HasColumnHeader Then
  35.     RowsOfPage = RowsOfPage + 1
  36.     lngTop = lngTop - lngRowHeight
  37. End If

  38. '樣式為1(豎線格樣式)時不畫橫線
  39. If Style <> 1 Then
  40.     For intI = 0 To RowsOfPage
  41.         rpt.Line (lngLeft, lngTop + lngRowHeight * intI)-(lngRight, lngTop + lngRowHeight * intI)
  42.     Next
  43. End If
  44. '樣式為2(橫線格樣式)時不畫豎線
  45. If Style <> 2 Then
  46.     For intI = 0 To lngMaxIndex
  47.          rpt.Line (rpt.Section(acDetail).Controls(intI).Left, lngTop)-(rpt.Section(acDetail).Controls(intI).Left, lngBottom)
  48.     Next
  49. '在最右邊畫豎線
  50. rpt.Line (lngRight, lngTop)-(lngRight, lngBottom)
  51. End If
  52. End Function

復(fù)制代碼
游客,如果您要查看本帖隱藏內(nèi)容請回復(fù)

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?注冊

x

評分

參與人數(shù) 1經(jīng)驗 +10 收起 理由
todaynew + 10 我很贊同

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏6 分享分享 分享淘帖 訂閱訂閱
2#
發(fā)表于 2010-9-18 09:26:26 | 只看該作者
先學(xué)習(xí)--收藏!謝謝!

點擊這里給我發(fā)消息

3#
發(fā)表于 2010-9-18 09:52:28 | 只看該作者
謝謝分享!!
4#
發(fā)表于 2010-9-18 09:52:50 | 只看該作者
謝謝分享!!
5#
發(fā)表于 2010-9-18 09:56:19 | 只看該作者
謝謝,收下了
6#
發(fā)表于 2010-9-18 09:57:27 | 只看該作者
報表分頁總計及補空行示例
7#
發(fā)表于 2010-9-18 09:59:59 | 只看該作者
這個應(yīng)該有用哦! 大力支持一下。
8#
發(fā)表于 2010-9-18 10:18:02 | 只看該作者
好東西,好心情
9#
發(fā)表于 2010-9-20 15:10:13 | 只看該作者
10樓的問題如何解決?

點擊這里給我發(fā)消息

10#
發(fā)表于 2010-9-20 15:46:19 | 只看該作者
回復(fù) 紅塵如煙 的帖子
奇怪了,我原來在一臺電腦測試沒有問題,現(xiàn)在另一臺電腦卻有10樓說的問題!同樣是XP+ACCESS2003的環(huán)境.
運行出錯,提示引用不存在的對象,ngLeft = rpt.Section(acDetail).Controls(0).Left這句話反相顯示。
ycxchen 發(fā)表于 2010-9-18 11:13

您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則

QQ|站長郵箱|小黑屋|手機(jī)版|Office中國/Access中國 ( 粵ICP備10043721號-1 )  

GMT+8, 2024-10-23 08:36 , Processed in 0.098870 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回復(fù) 返回頂部 返回列表