斑竹都来看,我的打印代码,为什么第2页以后就出问题了?请高手进来!
我打印的是msflexgrid表
我的打印代码,为什么第2页以后就出问题了?请高手进来!我的这个代码到第2页就少一行!
Function prnt1(X As Integer, Y As Integer, font As Single, txt As String)
    Printer.CurrentX = X
    Printer.CurrentY = Y
    Printer.FontBold = False
    Printer.FontSize = font
    Printer.Print txt
End FunctionPrivate Sub cmdDelete_Click()
MsgBox grd.text
End Sub
Sub command1_click()
    Dim fnt As Single
    Dim pp As Integer
    Dim txt As String
    Dim stry, strx, strx1, stry1, linw, page1, p As Integer
    Static a(100) As Integer '定义打印的列数
    Call cmdAdd_Click
    pp = 0 '设置开始页码0
    ss$ = "扬州市郊区信用联社电子设备统计报表" '定义表头
    tj$ = "统计日期:" & Format(Now, "yyyy年mm月dd日")
    tjr$ = "统计人:" & frmLogin.UserName
    kan = 0
    For I = 0 To grd.Cols - 1
        a(I) = grd.ColWidth(I) ' 定义每列宽
        kan = kan + a(I) '计算表格总宽度
    Next
    page1 = 30 '定义每页行数
    strx = 1000
    strx1 = 1000 ''定义X方向起始位置
    stry = 2000
    stry1 = 2000 '定义Y方向起始位置
    linw = 340 '定义行宽
    fnt = 11 '定义字体大小
    Printer.FontName = "宋体" ' & rsquo '定义字体
    dd = prnt1(3000, 700, 18, ss$) ' & rsquo '打印标题
    dd1 = prnt1(1000, 1700, 11, tj$) ' & rsquo '打印标题
    dd2 = prnt1(8200, 1700, 11, tjr$) ' & rsquo '打印标题
    'txt = "部门名称"
    'dd = prnt1(900, 18500, fnt, txt)
    Printer.Line (strx - 50, stry - 30)-(strx + kan - 10, stry - 30)
    For J = 0 To grd.Rows - 1
        '’gridrow为所要打印的行数
        'Grd.Rows = J
        strx = strx1
        Printer.Line (strx - 50, stry - 30)-(strx + kan - 10, stry - 30)
        p = p + 1
         For I = 0 To grd.Cols - 1
        ' Grd.Cols = I
        str = grd.TextMatrix(J, I)
        If IsNumeric(str) Then
        str = Space(3) & str
        Else
        str = Space(1) & str
        End If
         dd = prnt1(CInt(strx), CInt(stry), fnt, str)
         strx = strx + a(I)
         Next
        If p > page1 Then '’next page
            p = 0
            strx = strx1
            Printer.Line (strx - 50, stry + linw)-(strx + kan - 10, stry + linw)
            stry = stry1
                For n = 0 To grd.Cols - 1
                Printer.Line (strx - 30, stry - 30)-(strx - 30, stry + (page1 + 2) * linw)
                strx = strx + a(n)
                Next
            Printer.Line (strx - 30, stry - 30)-(strx - 30, stry + (page1 + 2) * linw)
            pp = pp + 1
            foot$ = "第 " + CStr(pp) + " 页"
            dd = prnt1(strx - 30 - 1000, stry + (page1 + 2) * linw + 100, 10, foot$) '& rsquo '打印页脚码
            Printer.NewPage '’next page
            dd = prnt1(3000, 700, 18, ss$) '’打印标题
            
            strx = strx1
            stry = stry1
            Printer.Line (strx - 50, stry - 30)-(strx + kan - 10, stry - 30) '’打印第一行
        Else
            stry = stry + linw
        End If
    Next
    st = stry
    If p < page1 Then '在最后页剩余划空行
        For o = p To page1
        strx = strx1
        Printer.Line (strx - 50, stry - 30)-(strx + kan - 10, stry - 30)
        stry = stry + linw
        Next
    End If
    stry = stry1
    strx = strx1
    stry = stry1 'line col
    For n = 0 To grd.Cols - 1
        Printer.Line (strx - 30, stry - 30)-(strx - 30, stry + (page1) * linw)
        strx = strx + a(n)
    Next
    Printer.Line (strx - 30, stry - 30)-(strx - 30, stry + (page1) * linw)
    pp = pp + 1
    foot$ = "第 " + CStr(pp) + " 页"
    dd = prnt1(strx - 30 - 1000, stry + (page1 + 2) * linw + 100, 10, foot$) '打印页脚码
    Printer.EndDoc  '打印结束End Sub

解决方案 »

  1.   

    难道没有人会吗,大家积极思考一下啊
      

  2.   

    说说出了什么问题啊,谁有那么多的时间看你的代码
      

  3.   

    第2页比第1页少一行,如果记录多于2页的话,第2页以后的所有页下面都打不出表格线!
      

  4.   

    呵呵,从新定义一下你的纸张大小我想就可以解决了,,,好了量一下纸张的尺寸吧
      

  5.   

    定义纸张大小,怎么很重要吗?我代码好象没有写纸张大小,是不是这个原因呢?我用的是A4纸张
      

  6.   

    请各位高手多帮帮忙,小第急死了!
      

  7.   

    有2大问题:
    1.如果记录少于2页,那没有问题,但打印出来的第2页比第一页少一行,指剩余的表格行少一行;
    2.如果记录大于2页,那打印出来的第2页记录比第1页多一行,且第2页的最后一条记录,没有表格线 。
    3。如果记录正好等于2页,没有任何错误!
      

  8.   

    如果是这样的话,我想可能是你初始化的时候有问题,其他的问题不大,由于我不是很懂.
    你从我的猜测去参考一下吧 .