技術(shù) 點
- 技術(shù)
- 點
- V幣
- 點
- 積分
- 6865
|
本帖最后由 紅塵如煙 于 2010-9-18 19:17 編輯
Access的報表存在一個問題,無論你在設(shè)計視圖中將控件對的看上去多么整齊,但預(yù)覽的時候通過控件邊框顯示出來的表格線條仍然會出現(xiàn)錯位現(xiàn)象,而通過報表的Line方法來畫表格就沒有這個問題了,而且在不用到臨時表的情況下,畫表格也是補空行的好辦法。
- '=======================================================================
- '函數(shù)名稱: ReportSheet
- '功能描述: 簡單報表中用來畫表格并實現(xiàn)補空行,用于打印單據(jù)類每頁樣式固定的報表
- '輸入?yún)?shù): rpt 必需的,報表對象,使用時用Me關(guān)鍵字引用
- ' RowsOfPage 必需的,每頁要顯示的記錄行數(shù)
- ' Style 可選的,表格樣式,0為網(wǎng)格式,1為橫格式,2為豎格式
- ' HasColumnHeader 可選的,是否對列標(biāo)題同樣畫表格
- '返回參數(shù): 無
- '使用示例: 在窗體的Page事件中調(diào)用: ReportSheet Me,30
- '相關(guān)調(diào)用:
- '使用注意: 主體節(jié)中的控件必須是索引從左到右,可以通過選中主體節(jié)中的所有控件,然后剪切再粘貼的操作來處理
- '兼 容 性:
- '參考資料:
- '作 者: 紅塵如煙
- '創(chuàng)建日期: 2010-9-17
- '=======================================================================
- Public Function ReportSheet(rpt As Report, _
- ByVal RowsOfPage As Integer, _
- Optional ByVal Style As Integer = 0, _
- Optional ByVal HasColumnHeader As Boolean = True)
- Dim intI As Integer
- Dim lngTop As Long '表格上邊距,即報表頁眉的高度
- Dim lngBottom As Long '表格下邊距,報表頁眉的高度 +主體節(jié)高度×每頁要顯示的記錄數(shù)
- Dim lngLeft As Long '表格左邊距,第一個控件的左邊距
- Dim lngRight As Long '表格右邊距,最后一個控件的左邊距+最后一個控件的寬度
- Dim lngRowHeight As Long '行高,即主體節(jié)高度
- Dim lngMaxIndex As Integer '主體節(jié)控件最大索引值
- lngRowHeight = rpt.Section(acDetail).Height
- lngMaxIndex = rpt.Section(acDetail).Controls.Count - 1
- lngTop = rpt.Section(acPageHeader).Height
- lngBottom = lngTop + lngRowHeight * (RowsOfPage)
- lngLeft = rpt.Section(acDetail).Controls(0).Left
- lngRight = rpt.Section(acDetail).Controls(lngMaxIndex).Left + rpt.Section(acDetail).Controls(lngMaxIndex).Width
- If HasColumnHeader Then
- RowsOfPage = RowsOfPage + 1
- lngTop = lngTop - lngRowHeight
- End If
- '樣式為1(豎線格樣式)時不畫橫線
- If Style <> 1 Then
- For intI = 0 To RowsOfPage
- rpt.Line (lngLeft, lngTop + lngRowHeight * intI)-(lngRight, lngTop + lngRowHeight * intI)
- Next
- End If
- '樣式為2(橫線格樣式)時不畫豎線
- If Style <> 2 Then
- For intI = 0 To lngMaxIndex
- rpt.Line (rpt.Section(acDetail).Controls(intI).Left, lngTop)-(rpt.Section(acDetail).Controls(intI).Left, lngBottom)
- Next
- '在最右邊畫豎線
- rpt.Line (lngRight, lngTop)-(lngRight, lngBottom)
- End If
- End Function
復(fù)制代碼
|
本帖子中包含更多資源
您需要 登錄 才可以下載或查看,沒有帳號?注冊
x
評分
-
查看全部評分
|