excel学习库

excel表格_excel函数公式大全_execl从入门到精通

Excel VBA 收费单打印/一步一步带你设计「收费管理系统」12

本文于2023年6月10日首发于本人同名其他平台,更多文章案例请搜索关注!

☆本期内容概要☆

  • 用户窗体设置:收费结算模块设置(7)

  • 单据打印

大家好,我是冷水泡茶,前几期我们分享了【收费管理系统】的设计,最近一期是(Excel VBA 收费结算模块/一步一步带你设计【收费管理系统】11),今天我们接着来。

今天的目标是完成收费单据打印的设计。

下面我们就开始:

1、增加一个复选框:CkbPrint,Caption改为“立即打印收费单:”

这里随带说一下昨天的合计标签,后来我把它的Caption改为“合计:0.00” 了。

跟LbAmount类似,我们要把CkbPrint的Visible属性设置为False,在我们启动“收费结算”功能模块时,才让它显示,其他模块不显示。初始值可以给它设置为TRUE,即默认直接打印收费单。这次我们可以根据LbAmount的位置来设置CkbPrint

确定显示CkbPrint位置,在If currTable = "tb收费明细" Then代码块里增加代码:

If currTable = "tb收费明细" Then    With Me    ......        With Me.LbAmount            .Left = Me.Frame3.Left + Me.CmdAddNew.Left            .Top = Me.Frame3.Top - Me.Frame3.Height            .Visible = True        End With         With Me.CkbPrint                .Left = Me.LbAmount.Left + Me.LbAmount.Width                .Top = Me.LbAmount.Top                .Visible = True         End With     ......    End WithEnd If

代码解析:先根据frame3的位置来确定LbAmount的位置,再根据LbAmount的位置来确定CkbPrint的位置,运行一下:

2、在收费结算单保存后,我们调用打印模块

(1)打印模板我们参考原来的的“合谷中医(收费管理系统2022)v1.0”中的打印表单:Print01,Print02。把Print02稍作修改,科室联,原来是把科室、医生、收费项目连成一个字段的,当时主要考虑一张单据上可能会有多个科室、医生的情况,现在我们不搞那么复杂,修改后,表格格式如下:

(2)代码可以参考,但需要大幅修改,我们单独设置一个打印过程:Sub PrintSingleVoucher(BillingNumber As String) ,放在Usf_AddAndModify窗体里。代码比较长,我放在第二条吧。这里就说一下制作思路。

A.与“合谷中医(收费管理系统2022)v1.0”不同,它是从listBox中取数的,我们现在从数据库中取数,虽然也可以从ListView中取数,但我觉得从数据库取数比较“正式”一点,虽然这可能会影响一点点性能。

B.PrintSingleVoucher过程带有参数,为单号

C.在我们点击保存按钮后,如果勾选了“立即打印收费单”,我们就查询保存时的单号的所有数据,存到数组里。

D.接下来就简单了(代码简单,过程繁琐),把数组的数据对应填到EXCEL表Print01,Print02。

E.数据填好后就打印出来。在过程开始,选择打印机,当用户点取消时退出程序。

'选择打印机,点取消退出 If Application.Dialogs(xlDialogPrinterSetup).Show = False Then    Exit Sub End If

这里一般很多人会用Application.Dialogs(xlDialogPrinterSetup).Show启动选择打印机程序,但点取消,它仍然运行打印,所以要用上面的代码。

3、在窗体保存按钮代码里,我们加上调用打印过程的代码:

If currTable = "tb收费明细" Then    If Me.CkbPrint = True Then        Call PrintSingleVoucher(Me.TxbNumber)    End If    MsgBox "结算成功!", , Me.LbTitleElse    MsgBox "保存成功!", , Me.LbTitleEnd If

4、有时候,保存后立即查询数据会查不到,上网查了查,说可以使用事务(Transaction)来确保数据的一致性。在建立数据连接之后,加条代码cnn.begintrans,在关闭连接之前,加条代码cnn.committrans。

其他基本没有什么变化,我们来看一下效果,打印机我是选择打印到PDF文件的:

好,今天就到这吧。请大家多多点赞、留言、分享,谢谢大家,我们下期再会。

本文于2023年6月10日首发于本人同名其他平台,更多文章案例请搜索关注!

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年12月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
      友情链接