VB打印的几种方法002--读取二维数组进行顺序打印
发布时间:2020-12-17 08:07:11 所属栏目:百科 来源:网络整理
导读:资源下载地址: 点击下载 一、问题描述: 工作中经常遇到打印的问题,但很多时候复杂的打印需要编程来实现,本文介绍一下将数据库记录读取到数组,再进行打
资源下载地址: 点击下载 一、问题描述: 工作中经常遇到打印的问题,但很多时候复杂的打印需要编程来实现,本文介绍一下将数据库记录读取到数组,再进行打印。 二、程序实现原理: (1)定义一个数组和编写一个打印函数 (2)按记录条数进行循环,再对每一条记录按字段数目进行循环,将后台Access记读取到数组中 (3)调用打印函数进行顺序打印 三:实验数据: 表记录内容如下:
字段定义如下:
四、程序实现 1、数组定义 Option Explicit Private dy_dm(3000,10) As Variant
Public Function prnt(x As Variant,y As Variant,fnt As Variant,txt0 As Variant) Printer.CurrentX = x Printer.CurrentY = y Printer.FontSize = fnt Printer.Print txt0 End Function
Private Sub cmdPrint_Click() Adodc1.Recordset.MoveFirst For i = 0 To zsl - 1 For j = 0 To 7 dy_dm(i,j) = Adodc1.Recordset(j) Next j Adodc1.Recordset.MoveNext Next i '确定页数 k = Int(zsl / 80) '80为每页行数 If k - zsl / 80 < 0 Then k = k + 1 End If fnt = 8 For p = 0 To k - 1 ' pa = p + 1 y = 300 x = 4500 txt = "2013年缴费明细" dd = prnt(x,y,fnt,txt) x = 8500 txt = "第" & p + 1 & "页" dd = prnt(x,txt) y = 500 x = 600 txt = "乡镇" dd = prnt(x,txt) x = 1500 txt = "集体" dd = prnt(x,txt) x = 2500 txt = "姓名" dd = prnt(x,txt) x = 3500 txt = "身份证号码" dd = prnt(x,txt) x = 5500 txt = "性别" dd = prnt(x,txt) x = 6000 txt = "缴费年份" dd = prnt(x,txt) x = 7000 txt = "缴费金额" dd = prnt(x,txt) x = 8500 txt = "代扣银行账号" dd = prnt(x,txt) For i = 0 + p * 80 To 79 + p * 80 y = 700 + 180 * (i - p * 80) x = 600 txt = dy_dm(i,0) dd = prnt(x,txt) x = 1500 txt = dy_dm(i,1) dd = prnt(x,txt) x = 2500 txt = dy_dm(i,2) dd = prnt(x,txt) x = 3500 txt = dy_dm(i,3) dd = prnt(x,txt) x = 5500 txt = dy_dm(i,4) dd = prnt(x,txt) x = 6000 txt = dy_dm(i,5) dd = prnt(x,txt) x = 7000 txt = dy_dm(i,6) dd = prnt(x,txt) x = 8000 txt = dy_dm(i,7) dd = prnt(x,txt) If Int(i / 10) - i / 10 = 0 Then Printer.Line (500,695 + (i - p * 80) * 180)-(10000,695 + (i - p * 80) * 180) End If Next i If zsl - p * 80 > 80 Then Printer.Line (500,695 + 180 * 80)-(10000,695 + 180 * 80) Printer.NewPage End If Next p Printer.EndDoc ' 打印完成。 Cls End Sub
五、程序总结 程序只能打印记录,所以代码实现中先利用打印函数prnt进行了字段的打印,再按字段的位置设置打印相应的记录内容。 六、程序优点之处 每10第记录一组,完了之后会打印一条线,每打印80条记录将会另起一页 七、程序待改进之处 1、假如只想让一页打印一条记录该怎么实现? 2、是否可以设置分散打印? 3、打印之后如避免再次打印已经打印过的记录? 4、如果再想单独打数据库中的某条记录能否设置单条打印功能? 5、能否提供提示总记录数和已经打印数目和未打印数目? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |