当前位置:首页 > 技术分析 > 正文内容

Excel VBA 收费单据打印/一步一步带你设计【收费管理系统】12

ruisui885个月前 (01-05)技术分析37

本文于2023年6月10日首发于本人同名公众号:Excel活学活用,更多文章案例请搜索关注!

☆本期内容概要☆

  • 用户窗体设置:收费结算模块设置(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 With
End 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.LbTitle
Else
    MsgBox "保存成功!", , Me.LbTitle
End If

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


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

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

☆猜你喜欢☆

Excel VBA 电子发票管理助手

Excel VBA 凭证打印

Excel VBA 中医诊所收费系统

Excel VBA 动态添加控件

Excel VBA 酷炫的日期控件

Excel 固定资产折旧计提表

Excel VBA 数组字段定位排序

Excel 处理重复值

Excel VBA 最简单的收发存登记系统

Excel 公式函数/查找函数之LOOKUP

Excel VBA 文件批量改名

Excel 公式函数/动态下拉列表

Excel VBA 输入逐步提示

Excel 基础功能【数据验证】



本文于2023年6月10日首发于本人同名公众号:Excel活学活用,更多文章案例请搜索关注!

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/35.html

分享给朋友:

“Excel VBA 收费单据打印/一步一步带你设计【收费管理系统】12” 的相关文章

「 VUE3 + TS + Vite 」父子组件间如何通信?

组件之间传值,大家都很熟悉,涉及到 VUE3 +TS 好多同学就无从下手了,所以分享这篇文章,希望看完后提起 VUE3+TS 能够不慌不忙。平时使用的函数如:ref、reactive、watch、computed 等需要先引入才能使用,但是本篇文章介绍的 defineProps、withDefaul...

java调用API操作GitLab

最近需要在一个WEB项目中集成GitLab,用到了GitLab的API操作,在网上找了很久都是说直接调用GitLab的Http接口,而且API官方只有javadoc没有其它说明文档,特别记录下,以备查询。这里采用Token的认证方式,因此需要先登陆GitLab新建一个Token,创建方式如下:创建完...

编码 10000 个小时后,开发者悟了:“不要急于发布!”

【CSDN 编者按】在软件开发的道路上,时间是最好的老师。根据“一万小时定律”,要成为某个领域的专家,通常需要大约一万小时的刻意练习。本文作者身为一名程序员,也经历了一万小时的编程,最终悟出了一个道理:慢即是快,重视架构设计和代码质量,确保每一行代码都经得起时间的考验。作者 | Sotiris Ko...

HTML5最新版本介绍

HTML5是HTML4.01和XHTML1.0之后超文本标记语言的最新版本,由一群自由思想者设计,最终实现了多媒体支持、交互性、更智能的表单和更好的语义标注。 HTML 5不只是 HTML规范的最新版本,它是用于生成现代 Web内容的一系列相关技术的总称,其中最重要的三个技术是:HTML5核心规范...

JavaScript数组操作:掌握常用方法,提升开发效率

JavaScript数组操作:从增删改查到高级应用本文深入解析JavaScript中常用的数组方法,包括push、unshift、pop、shift、map、filter、reverse、at 和 slice。通过详细的例子和应用场景,帮助开发者快速掌握这些方法,提升代码效率和可读性。开篇点题作为J...

22《Vue 入门教程》VueRouter 路由嵌套

1. 前言本小节我们介绍如何嵌套使用 VueRouter。嵌套路由在日常的开发中非常常见,如何定义和使用嵌套路由是本节的重点。同学们在学完本节课程之后需要自己多尝试配置路由。2. 配置嵌套路由实际项目中的应用界面,通常由多层嵌套的组件组合而成。同样地,URL 中各段动态路径也按某种结构对应嵌套的各层...