斑竹都来看,我的打印代码,为什么第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
我打印的是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页,那没有问题,但打印出来的第2页比第一页少一行,指剩余的表格行少一行;
2.如果记录大于2页,那打印出来的第2页记录比第1页多一行,且第2页的最后一条记录,没有表格线 。
3。如果记录正好等于2页,没有任何错误!
你从我的猜测去参考一下吧 .