excel学习库

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

Excel VBA 收费结算模块/一步一步带你设计「收费管理系统」10

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

☆本期内容概要☆

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

  • 数据正确性校验

大家好,我是冷水泡茶,前几期我们分享了【收费管理系统】的设计,有几天没有搞它了,回顾一下:

不知不觉都写了十多期了,可见做个小项目还是要花很多时间与精力的,再把过程写出来,尽量能让人看懂,那也是不太容易的事。闲话少叙,我们继续吧。

今天的目标是把“收费结算“模块数据保存代码完成。

下面我们一起来做吧:

1、暂时修改“tb收费明细”字段显示宽度,以便观察数据,把“备注”改为非必填字段:

最后,我们再把它调整过来,对列宽进行了适当调整,使得窗体显示正常:

2、修改窗体Usf_AddAndModify上的“保存”按钮的代码,增加一段针对收费结算模块的特别处理:

Private Sub CmdSave_Click()    Dim arrTable()    Dim LvItem As ListItem    Dim NullCount As Integer    Dim arrID() As String       '先不确定数据类型,用来存放split(strdeletedid)    Dim arrAccCode() As String    Dim iCtrl As Control    On Error Resume Next    If CmdChangeColWidth.Caption = "固定列宽" Then        Call CmdChangeColWidth_Click    End If    If ModifyStatus = 0 And DeleteStatus = 0 Then        MsgBox "数据无任何修改,无需保存!"        Exit Sub    End If    '******↓↓↓↓↓↓↓↓收费结算模块保存前预处理↓↓↓↓↓↓↓↓*****    If Me.LvDetail.ListItems.Count = 0 Then        Exit Sub '如果没有记录,退出保存。        ModifyStatus = 0    End If    If currTable = "tb收费明细" Then        If Me.CmbCustomer = "" Then            MsgBox "客户未填写!"            Exit Sub        End If        If Me.CmbDoctor = "" Then            MsgBox "医生未填写!"            Exit Sub        End If        If Me.CmbSource = "" Then            MsgBox "客户来源未填写!"            Exit Sub        End If        If Me.CmbDepartment = "" Then            MsgBox "科室未填写!"            Exit Sub        End If        '检查是否已存在单号        SQL = " Select count(*) from tb收费明细 where 单号='" & Me.TxbNumber & "'"        If RecordValue(dataFile, SQL) > 0 Then            MsgBox ("已存在单号,不能保存!")            Exit Sub        End If        '梳理数据,删除收费项目为空的记录        '补全listview字段值        With Me.LvDetail            For i = .ListItems.Count To 1 Step -1                If Len(Trim(.ListItems(i).SubItems(Pxy(tbTitle, "收费项目") - 1))) = 0 Then                    .ListItems.Remove i                Else                    .ListItems(i).SubItems(Pxy(tbTitle, "单号") - 1) = Me.TxbNumber                    .ListItems(i).SubItems(Pxy(tbTitle, "日期") - 1) = Me.TxbDate                    .ListItems(i).SubItems(Pxy(tbTitle, "客户") - 1) = Me.CmbCustomer                    .ListItems(i).SubItems(Pxy(tbTitle, "渠道") - 1) = Me.CmbSource                    .ListItems(i).SubItems(Pxy(tbTitle, "科室") - 1) = Me.CmbDepartment                    .ListItems(i).SubItems(Pxy(tbTitle, "医生") - 1) = Me.CmbDoctor                    .ListItems(i).SubItems(Pxy(tbTitle, "收款人") - 1) = currUserName                End If            Next        End With        '再判断一下有没有记录        If Me.LvDetail.ListItems.Count = 0 Then            MsgBox "没有可保存的记录!"            Exit Sub '如果没有记录,退出保存。            ModifyStatus = 0        End If        '检查记录的完整性        With Me.LvDetail            For i = 1 To .ListItems.Count                  For j = 2 To .ColumnHeaders.Count - 1                    If Len(Trim(.ListItems(i).SubItems(j - 1))) = 0 Then                        Msg = Msg & "第" & i & "行,第" & j & "列" & Chr(10)                    End If                Next            Next        End With        If Msg <> "" Then            MsgBox Msg & "以上单元格未正确填写!"            Exit Sub        End If    End If  '******↑↑↑↑↑↑↑↑收费结算模块保存前预处理↑↑↑↑↑↑↑↑******

代码解析:从第16行开始,都是本次增加的。

(1)Line17~37,各种数据有效性判断

(2)Line38~43,检查单号是否已存在,方法是查询数据库“tb收费明细”表中,单号=me.txbnumber的记录,如果能查到,说明单号已存在,则不能保存。

(3)Line44~60,循环ListView,删除收费项目为空的记录,对于收费项目不为空的记录,根据表头控件信息,填写单号、日期、客户、渠道、科室、医生、收款人等信息。

(4)Line67~80,检查数据完整性,方法是循环ListView的每条记录,除第1列和最后一列的其他所有列,判断是否有内容,这里使用len+trim的方法,避免遗漏看不见的空格,如果有空记录,则给出提示,不能保存。

3、收费项目输入正确性校验:

InkEdit控件退出时,检查输入的收费项目是否存在于tb收费项目表中。

 '根据收费项目,检查收费项目输入的准确性,查询单价填入 If .ColumnHeaders(intCol) = "收费项目" Then      SQL = "select count(*) from tb收费项目 where 项目全称='" & InkEdit1 & " '"      If RecordValue(dataFile, SQL) = 0 Then           MsgBox "无此收费项目,请添加后再操作!"           InkEdit1 = ""           Exit Sub       End If

今天我们就做到这,看一下最终成果:

所有记录正常填写,保存成功,由于还没有做收费明细的查询功能,所以我们先到数据库里查看记录,符合预期。

如果记录输入不符合要求,大多会进行判断,给出提示,但这并不能完全避免输入错误,有些情况必须经过不断测试后才能发现,我们后期再解决。

由于时间与篇幅的关系,今天就到这吧。后面会继续,敬请关注!还请大家多多点赞、留言、分享,谢谢大家,我们下期再会。

☆猜你喜欢☆

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

发表评论:

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

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