<output id="os3gq"><ruby id="os3gq"></ruby></output>

    1. <mark id="os3gq"></mark>
    2. Access交流中心

      北京 | 上海 | 天津 | 重慶 | 廣州 | 深圳 | 珠海 | 汕頭 | 佛山 | 中山 | 東莞 | 南京 | 蘇州 | 無錫 | 常州 | 南通 | 揚州 | 徐州 | 杭州 | 溫州 | 寧波 | 臺州 | 福州 | 廈門 | 泉州 | 龍巖 | 合肥 | 蕪湖 | 成都 | 遂寧 | 長沙 | 株洲 | 湘潭 | 武漢 | 南昌 | 濟南 | 青島 | 煙臺 | 濰坊 | 淄博 | 濟寧 | 太原 | 鄭州 | 石家莊 | 保定 | 唐山 | 西安 | 大連 | 沈陽 | 長春 | 昆明 | 蘭州 | 哈爾濱 | 佳木斯 | 南寧 | 桂林 | ? | 貴陽 | 西寧 | 烏魯木齊 | 包頭 |

      回復 加入收藏帖  復制
      我要提問 帖子上移

      [5分]提問:限定行數并補空行的例子

      風水師 等級: 一星會員▲ 積分:137 金幣:240 來自:溫州Access交流中心 發表于:2010-04-02 05:44:25  
      樓主

      '       函數名:RepDetail_Format()
      '       調用報表必須使用控件:(文本框)
      '               txtRecord_NO   在主體節    可見                用于顯示記錄號,可選
      '               txtTotGrp      在主體節    不可見  =Count(*)   用于取得報表的總記錄數,必須
      '               txtCurrentPage 在主體節    不可見  =[Page]     用于取得當前頁數,必須
      '
      '       參數說明:  RepName         報表名稱    (當前報表可用 (Me), 其它報表可用:(Reports.報表名)引用)
      '                   txtCurrentPage  報表主體節上的[txtCurrentPage]文本框控件
      '                   txtRecordNum    報表定義的私人變量              用于記錄數的遞增,必須  使用直接用:txtRecordNum 輸入不可變更
      '                                   (注:Private txtRecordNum As Integer)
      '                   txtTotGrp       報表主體節上的[txtTotGrp]文本框控件
      '                   IntPrintLen     報表打印的行數。   數據類型:Integer    (注:不可超過每頁允許的最大記錄數)
      '

      '       使用方法:
      '                   1,先定義一私人變量:Private txtRecordNum As Integer,必須
      '                   2,報表主體節的格式化事件中調用(Detail_Format 事件)
             
      '       調用方法:NextRecord=RepDetail_Format(RepName , txtCurrentPage.text , txtRecordNum , txtTotGrp.text , IntPrintLen)
      '       使用示例:NextRecord = RepDetail_Format(Me, [txtCurrentPage], txtRecordNum, [txtTotGrp], 20)
      '==============================================================


      Option Compare Database

      Option Explicit '不允許使用未經聲明的變量,可以防止引用錯誤的變量


      Function RepDetail_Format(RepName As Report, txtCurrentPage As Integer, txtRecordNum As Integer, txtTotGrp As String, IntPrintLen As Integer) As Boolean
      Dim ctrl As Control '定義ctrl為控件數據類型
      Dim intCurrentPage1stI As Integer 'intCurrentPage1stI記錄每頁起始的I,用于強制分頁
      Dim intMaxI As Integer 'intMaxI是用計算得出的所有頁的總行數(包括空行)
      Dim intCountPerPage As Integer  'intCountPerPage是指定的每頁打印記錄行數


      On Error GoTo ER

       intCountPerPage = IntPrintLen       'intCountPerPage是指定的每頁打印記錄行數
      '----------------------------------------
            
              txtRecordNum = txtRecordNum + 1     '----遞增全局 txtRecordNum 變量

      '--------------計算最大記錄數--------------------

          If intMaxI = 0 Then
              If txtTotGrp Mod intCountPerPage = 0 Then
                  intMaxI = txtTotGrp
              Else
                  intMaxI = (Fix(txtTotGrp / intCountPerPage) + 1) * intCountPerPage
              End If
          End If
      '-----------------------------------------------
          '設置每頁第一條記錄的記錄數(順號值)
         
       '   If txtRecordNum = IntPrintLen Then intCurrentPage1stI = (txtCurrentPage - 1) * intCountPerPage
       
          intCurrentPage1stI = (txtCurrentPage - 1) * intCountPerPage
       '    Debug.Print "intCurrentPage1stI=" & intCurrentPage1stI & "   intCountPerPage + intCurrentPage1stI=" & intCountPerPage + intCurrentPage1stI & "   intMaxI=" & intMaxI


          '當到達本頁設定的記錄數時,強制分頁
          If txtRecordNum = intCountPerPage + intCurrentPage1stI Then
              RepName.Section(acDetail).ForceNewPage = 1
          Else
              RepName.Section(acDetail).ForceNewPage = 0
          End If

          If txtRecordNum <= txtTotGrp Then
          
        '      If txtRecordNum = 0 Then txtRecordNum = 1
                 
              For Each ctrl In RepName.Section(0).Controls
                                                                               '  Debug.Print "ctrl.ItemData" & ctrl.ItemData
                  With ctrl
                      .ForeColor = 0
                  End With
              Next ctrl

       

       

      access培訓  誠聘access開發人員

          風水師
            獲得社區協助:請教問題(即發帖)119篇,其中獲得解決的114篇;
            協助社區成員:協助他人(即回帖)42篇,其中被設為【最佳答案】的3篇;
            協助我們社區:發布技術文章6篇,邀請了4名新會員注冊本社區(如何邀請會員注冊,詳見:http://www.www.beijingfeeling.com/sitehelp.asp)。
      Top

      掃描下方工作人員的微信二維碼加微信,邀您加入Access課堂微信群,進入一個技術交際圈:

      網站工作人員微信

      風水師 等級:一星會員▲ 積分:137 金幣:240 來自:溫州Access交流中心 發表于2010/4/2 5:45:27 
      1樓 得分: 0


      Else
          '---------------------------------設置文本框字體顏色為白色----------------------
              If txtRecordNum = intMaxI + 1 Then txtRecordNum = 1          '--------當 txtRecordNum 增長至 報表最大記錄數時(包括空白)歸 1
                                                                                   'Debug.Print "2=" & txtRecordNum
                  '超過報表最后一條記錄,由于NextRecord = False報表上實際還是最后
                  '一條記錄的內容,設定文本框字體顏色是白色,看起來就是空行了。
              For Each ctrl In RepName.Section(0).Controls
                  With ctrl
                      .ForeColor = 16777215
                  End With
              Next ctrl
             '----------將第一條記錄設為黑色(顯示出來)-------------
              If txtRecordNum = 1 Then
                  For Each ctrl In RepName.Section(0).Controls
                      With ctrl
                          .ForeColor = 0
                      End With
                  Next ctrl
              End If
              '---------------------------------------------------
          End If
      '=================================================================================================
                 
      '=======================第二步,處理是否進入下一條記錄===========================
          If txtTotGrp < intMaxI Then
        
          '當總記錄數<總行數時,分三段來考慮是否進入下一條記錄
              '
              If txtRecordNum < txtTotGrp Then
                  RepDetail_Format = True
              ElseIf (txtRecordNum >= txtTotGrp And txtRecordNum < intMaxI) Then
                  RepDetail_Format = False
              Else
                  RepDetail_Format = True
              End If
          Else
                   '當總記錄數=總行數時,分兩段來考慮是否進入下一條記錄,但兩段實際都是同一句代碼
              RepDetail_Format = True
          End If
                                              '    Debug.Print "txtRecordNum=" & txtRecordNum & "   txtTotGrp=" & txtTotGrp
         

          RepName.txtRecord_NO = txtRecordNum      '對文本框:txtRecord_NO 置值
      Exit Function

      ER:
          If Err() = 2465 Then    '-------此項為沒有  文本框:txtRecord_NO 時 取消置值
              Resume Next
          Else
              MsgBox (Err() & Err.Description)
          End If
         
      End Function



          風水師
            獲得社區協助:請教問題(即發帖)119篇,其中獲得解決的114篇;
            協助社區成員:協助他人(即回帖)42篇,其中被設為【最佳答案】的3篇;
            協助我們社區:發布技術文章6篇,邀請了4名新會員注冊本社區(如何邀請會員注冊,詳見:http://www.www.beijingfeeling.com/sitehelp.asp)。
      風水師 等級:一星會員▲ 積分:137 金幣:240 來自:溫州Access交流中心 發表于2010/4/2 5:51:14 
      2樓 得分: 0

      Dim intCurrentPage1stI As Integer 'intCurrentPage1stI記錄每頁起始的I,用于強制分頁

      想問一下:記錄每頁起始的I,用于強制分頁的意思,舉例來說,每頁報表我指定打印6行,一個銷售訂單有20條記錄.那就得4頁.intCurrentPage1stI記錄每頁起始的I,也就是說intCurrentPage1stI記錄第二頁起始的行數為7,第三頁起始行數13行.,第三頁起始行數為19行,是這種理解吧.



          風水師
            獲得社區協助:請教問題(即發帖)119篇,其中獲得解決的114篇;
            協助社區成員:協助他人(即回帖)42篇,其中被設為【最佳答案】的3篇;
            協助我們社區:發布技術文章6篇,邀請了4名新會員注冊本社區(如何邀請會員注冊,詳見:http://www.www.beijingfeeling.com/sitehelp.asp)。
      風水師 等級:一星會員▲ 積分:137 金幣:240 來自:溫州Access交流中心 發表于2010/4/2 6:29:28 
      3樓 得分: 0
      txtRecordNum變量的含義是什么呢?

          風水師
            獲得社區協助:請教問題(即發帖)119篇,其中獲得解決的114篇;
            協助社區成員:協助他人(即回帖)42篇,其中被設為【最佳答案】的3篇;
            協助我們社區:發布技術文章6篇,邀請了4名新會員注冊本社區(如何邀請會員注冊,詳見:http://www.www.beijingfeeling.com/sitehelp.asp)。
      風水師 等級:一星會員▲ 積分:137 金幣:240 來自:溫州Access交流中心 發表于2010/4/2 6:45:45 
      4樓 得分: 0

      '當到達本頁設定的記錄數時,強制分頁
          If txtRecordNum = intCountPerPage + intCurrentPage1stI Then
              RepName.Section(acDetail).ForceNewPage = 1 '當前節在新頁的頂部打印
          Else
              RepName.Section(acDetail).ForceNewPage = 0  '當前節(正在設置屬性的節)在當前頁中打印。
          End If

       

      就是想問一下:如果記錄數只有5條,而每頁可以打印6條記錄,程序自動判斷它在當前頁中打印,而如果記錄數有7條,每頁可以打印6條,程序自動判斷它在下一頁打印.我就是不理解txtRecordNum在什么情況下,系統會判斷RepName.Section(acDetail).ForceNewPage = 1 '當前節在新頁的頂部打印



          風水師
            獲得社區協助:請教問題(即發帖)119篇,其中獲得解決的114篇;
            協助社區成員:協助他人(即回帖)42篇,其中被設為【最佳答案】的3篇;
            協助我們社區:發布技術文章6篇,邀請了4名新會員注冊本社區(如何邀請會員注冊,詳見:http://www.www.beijingfeeling.com/sitehelp.asp)。
      simon 等級:普通會員 積分:32 金幣:40 來自:廣州Access交流中心 發表于2010/4/2 13:15:17 
      5樓 得分: 0
      期待高手解答,頂

          很高興與您就本帖子進行交流,如果我的回答已經解決了您的問題,請點擊上方的“最佳答案”,這樣本帖子就不會在“待解決問題區”顯示了,我也將獲得2個積分獎勵,并不會減少您的積分!
          simon
            獲得社區協助:請教問題(即發帖)17篇,其中獲得解決的10篇;
            協助社區成員:協助他人(即回帖)48篇,其中被設為【最佳答案】的10篇;
            協助我們社區:發布技術文章1篇,邀請了1名新會員注冊本社區(如何邀請會員注冊,詳見:http://www.www.beijingfeeling.com/sitehelp.asp)。
      善裕 等級:一星會員 積分:45 金幣:400 來自:廈門Access交流中心 發表于2010/4/12 21:21:50 
      6樓 得分: 0

      到我的空間看一下,我原來也請高手幫過這個問題



          很高興與您就本帖子進行交流,如果我的回答已經解決了您的問題,請點擊上方的“最佳答案”,這樣本帖子就不會在“待解決問題區”顯示了,我也將獲得2個積分獎勵,并不會減少您的積分!
          愛在深秋
            獲得社區協助:請教問題(即發帖)111篇,其中獲得解決的103篇;
            協助社區成員:協助他人(即回帖)97篇,其中被設為【最佳答案】的16篇;
            協助我們社區:發布技術文章10篇,邀請了4名新會員注冊本社區(如何邀請會員注冊,詳見:http://www.www.beijingfeeling.com/sitehelp.asp)。
      蘭草 等級:普通會員 積分:4 金幣:0 來自:宣城Access交流中心 發表于2010/4/23 16:41:35 
      7樓 得分: 0

      我的理解txtRecordNum是記錄格式化打印的行數,每格式打印一次就增加1,ntCurrentPage1stI 從0開始,你再看下程序就知道了。見笑了,

      想問下你 If txtRecordNum = intMaxI + 1 Then txtRecordNum = 1 起什么作用,似乎為了讓打印第一行時部位空行,可不理解為什么?



          很高興與您就本帖子進行交流,如果我的回答已經解決了您的問題,請點擊上方的“最佳答案”,這樣本帖子就不會在“待解決問題區”顯示了,我也將獲得2個積分獎勵,并不會減少您的積分!
          蘭草
            獲得社區協助:請教問題(即發帖)2篇,其中獲得解決的0篇;
            協助社區成員:協助他人(即回帖)5篇,其中被設為【最佳答案】的1篇;
            協助我們社區:發布技術文章0篇,邀請了1名新會員注冊本社區(如何邀請會員注冊,詳見:http://www.www.beijingfeeling.com/sitehelp.asp)。
      總記錄:7篇  頁次:1/1 9 1 :
      您還沒有在Access軟件網登錄不能回復帖子
      • 你沒有登錄,請點擊后面鏈接登錄:登錄
      • 如果你沒有注冊,請點擊后面鏈接注冊:注冊,注冊完成后,請再次訪問本頁功能。
       
      湖北11选5