Office中国论坛/Access中国论坛

标题: access报表 奇数24行,偶数32行,强制分行  在线等 [打印本页]

作者: jxjawlh    时间: 2009-8-23 20:31
标题: access报表 奇数24行,偶数32行,强制分行  在线等
我做了个数据库,奇数页上半部分有一些别的数据,所以只能放下24行数据,偶数页就是完全的表格样式,可以放下32行数据,请问怎么设置?
就这样奇数页和偶数页都固定行数,循环使用。
不强制分页,预览的结果正常,但打印的结果不同,会出现错位,打印机不同,效果也是一样。

Option Compare Database
Dim sum1 As Currency
Dim sum11 As Currency
Dim sum111 As Currency
Dim sum2 As Currency
Dim lngA As Long
Dim row As Long
Dim RowsInPage As Integer

Private Sub 主体_Format(Cancel As Integer, FormatCount As Integer)



'    RowsInPage = 25
'    row = row + 1
'    If row >= RowsInPage Then
'        Me.PageBreak18.Visible = True
'        row = -1
'    Else
'        Me.PageBreak18.Visible = False
'        row = 7
'    End If
End Sub
Private Sub 主体_Print(Cancel As Integer, PrintCount As Integer)
'    sum1 = sum1 + Me.金额.Value
'    sum11 = sum11 + Me.税额.Value
'    sum111 = sum111 + Me.合计.Value
      Dim lngRows As Long   '设置第一页行数用
    Dim lngRows2 As Long   '设置第二页行数用
    Dim lngRows3 As Long   '设置第、二页总行数用
    Dim intAllRows As Integer      'intAllRows  定义为包括空行,完整的行数。
    Dim objCtl As Control
   
   
    lngA = lngA + 1
    lngRows = 24           '设置第一页行数为24
    ingrows3 = 56
   
    If intAllRows = 0 Then
        If txtTotGrp Mod lngRows = 0 Then
            intAllRows = txtTotGrp
        Else
            intAllRows = (Fix(txtTotGrp / lngRows) + 1) * lngRows
        End If
    End If
    Debug.Print intAllRows
   
    '====================================================================
    '1
    '2-4 设备三个变量
    '5   设置 总行数 为24行
    '
    '当 intAllRows 为0时  这时没有值,所有为0
    '执行 判断   数据表中的行 与 ingRows 求余=0
    '       则 包含空行的总行数=数据表中的行
    '    否则
    '       包含空行的总行数=取 数据表中的行/ingRows的整数+1再*原本设置的行数
    '
    '
    '====================================================================
   
   
   
   
    Debug.Print intAllRows
   
    If lngA <= txtTotGrp Then
        For Each objCtl In Me.Section(0).Controls
            If objCtl.ControlType = acTextBox Then
            With objCtl
                .Visible = True
            End With
            End If
        Next objCtl
    Else
        If lngA = intAllRows + 1 Then lngA = 1
        For Each objCtl In Me.Section(0).Controls
            If objCtl.ControlType = acTextBox Then
            With objCtl
                .Visible = False
            End With
            End If
        Next objCtl
       '设置第一条记录要显示出来
        If lngA = 1 Then
            For Each objCtl In Me.Section(0).Controls
                If objCtl.ControlType = acTextBox Then
                With objCtl
                    .Visible = True
               End With
               End If
            Next objCtl
        End If
    End If
   
    '以下设定是否进入下一节
    If txtTotGrp < intAllRows Then
        If lngA < txtTotGrp Then
            Me.NextRecord = True
        ElseIf (lngA >= txtTotGrp And lngA < intAllRows) Then
            Me.NextRecord = False
        Else
            Me.NextRecord = True
        End If
    Else
        Me.NextRecord = True
    End If
End Sub




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3