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

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

ruisui884个月前 (01-05)技术分析28

本文于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” 的相关文章

如何在 Linux 发行版中安装微信和 QQ?

很多人因为工作沟通的原因需要用到微信和 QQ,那么如何在 Linux 发行版中安装微信和 QQ 呢?以下是一些尝试的解决方法。QQ上一个版本的 QQ Linux 版还是在2009年,而在现在,基于 NT 架构的全新 QQ Linux版已经被正式推出,为所有用户提供下载。新版本提供了deb、rpm、A...

总结了Vue3的七种组件通信方式,别再说不会组件通信了

写在前面本篇文章是全部采用的<script setup>这种组合式API写法,相对于选项式来说,组合式API这种写法更加自由,具体可以参考Vue文档对两种方式的描述。本篇文章将介绍如下七种组件通信方式:propsemitv-modelrefsprovide/injecteventBusv...

GitLab-合并请求

描述合并请求可用于在您对项目进行的其他人员之间交换代码,并轻松与他们讨论更改。合并请求的步骤步骤1-在创建新的合并请求之前,GitLab中应该有一个创建的分支。您可以参考本章来创建分支-步骤2-登录到您的GitLab帐户,然后转到“ 项目”部分下的项目 -步骤3-单击“ 合并请求”选项卡,然后单击“...

「Git迁移」三行命令迁移Git包含提交历史,分支,tag标签等信息

问题描述:公司需要将一个git远程服务器的全部已有项目迁移到一台新服务器的Gitlab中,其中需要包含全部的提交纪录,已有的全部分支与全部打tag标签,目前此工作已全部迁移完毕,特此记录一下操作步骤环境描述:1. 要迁移的远程Git:Gitblit2. 迁移目的Git:Gitlab3. 暂存代码的P...

博信股份新战略后再推新品 TOPPERS E2耳机售价199元

中新网6月21日电 20日,博信股份在北京正式推出新品TOPPERS主动降噪耳机E2,这是博信股份继2月战略暨新品发布会后的第二次新品亮相。价格方面,TOPPERS主动降噪耳机E2零售价199元,并于6月20日下午4点在京东商城公开销售。据介绍,TOPPERS主动降噪耳机E2采用AMS(奥地利微电子...

一次Java内存占用高的排查案例,解释了我对内存问题的所有疑问

问题现象7月25号,我们一服务的内存占用较高,约13G,容器总内存16G,占用约85%,触发了内存报警(阈值85%),而我们是按容器内存60%(9.6G)的比例配置的JVM堆内存。看了下其它服务,同样的堆内存配置,它们内存占用约70%~79%,此服务比其它服务内存占用稍大。那为什么此服务内存占用稍大...