
本文于2023年5月29日首发于本人同名公众号,更多文章案例请搜索关注!
☆本期内容概要☆
用户窗体设置:收费结算模块设置(4)
增加数据库表“tb价格文件"
大家好,我是冷水泡茶,前些天我们分享了【收费管理系统】收费结算模块的设计【Excel VBA 收费结算模块/一步一步带你设计【收费管理系统】08】,有几天没有搞它了,本期我们继续。
根据前面我们分享的(【重磅】Excel VBA 应用分享/中医诊所收费系统/Excel+ListBox版),我们发现,目前的数据库结构需要调整:
1、tb收费明细:需要增加字段,数量、单价。
2、需要增加一个新表:tb价格文件,用于录入收费项目时,自动填写价格,根据数量,自动计算收费金额。
下面我们一起来做吧:
1、tb收费明细增加数量、单价字段:
打开数据库,选中tb收费明细,进入设计视图,右击一个字段,点插入行:

输入字段名称:数量,数据类型:数字,接着插入金额,数据类型也是数字。

2、新建数据库表:tb价格文件

3、给tb价格文件增加系统入口菜单,同样采用复制的方法:

4、设置tb价格文件表的编辑代码,:
Private Sub CmdPrice_Click() Sheets("Settings").Activate With ActiveSheet iRow = .UsedRange.Rows.Count currUserName = .Cells(Application.WorksheetFunction.Match("currUserName", _ .Range(Cells(1, 2), Cells(iRow, 2)), 0), 3) End With If currUserName = "" Then MsgBox "当前登录用户信息丢失,请重新登录!" Exit Sub End If Unload Me currTable = "tb价格文件" Usf_AddAndModify.ShowEnd Sub
5、修改Usf_AddAndModify启动代码,在访问的表为空的情况下,给一条空记录:
If RecordValue(dataFile, "select count(*) from " & currTable) > 0 Then aData = GetData(dataFile, initSQL)Else ReDim aData(0 To UBound(tbTitle, 1) - 1, 0 To 0)End If
代码解析:if语句,else部分是今天新加的,如果表没有记录,那么直接访问aData是要出错的,ReDim一下,在加载到ListView的时候,增加一条空记录。

6、增加tb价格文件表中项目代码、项目全称的双击选择输入代码:
ElseIf currTable = "tb价格文件" Then If .ColumnHeaders(intCol) = "项目代码" Or .ColumnHeaders(intCol) = "项目全称" Then ItemFullName = InkEdit1 Usf_ItemSelect.Show End IfEnd If
代码分析:如果双击的是项目代码或项目名称栏,则显示项目选择窗体。
7、修改项目列表窗体Usf_ItemSelect点击代码,这里为了能够同时填入项目代码和项目名称,把变量intCol改成公共变量:
Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node) On Error Resume Next If Me.TreeView1.SelectedItem.Children = 0 Then If IsFormActive("Usf_AddAndModify") Then With Usf_AddAndModify If .LvDetail.ColumnHeaders(intCol) = "收费项目" Then .InkEdit1.Text = Me.TreeView1.SelectedItem.Text ElseIf .LvDetail.ColumnHeaders(intCol) = "项目代码" Then .LvDetail.SelectedItem.SubItems(intCol) = Me.TreeView1.SelectedItem.Text .InkEdit1.Text = Me.TreeView1.SelectedItem.Key ElseIf .LvDetail.ColumnHeaders(intCol) = "项目全称" Then .InkEdit1.Text = Me.TreeView1.SelectedItem.Text .LvDetail.SelectedItem.SubItems(intCol - 2) = Me.TreeView1.SelectedItem.Key End If End With End If Unload Me End IfEnd Sub
8、修改tb收费明细表中,输入收费项目,自动带出单价,并把数量预填为1,计算金额;修改数量、单价,自动计算金额,金额不能修改,代码在HideInkEdit过程中:
ElseIf currTable = "tb收费明细" Then '根据收费项目,查询单价填入 If .ColumnHeaders(intCol) = "收费项目" Then .SelectedItem.SubItems(intCol - 1) = InkEdit1.Text SQL = "select 单价 from tb价格文件 where 项目全称='" & InkEdit1 & "'" .SelectedItem.SubItems(Pxy(tbTitle, "单价") - 1) = RecordValue(dataFile, SQL) .SelectedItem.SubItems(Pxy(tbTitle, "数量") - 1) = 1 .SelectedItem.SubItems(Pxy(tbTitle, "金额") - 1) = _ .SelectedItem.SubItems(Pxy(tbTitle, "数量") - 1) _ * .SelectedItem.SubItems(Pxy(tbTitle, "单价") - 1) ElseIf .ColumnHeaders(intCol) = "数量" Then .SelectedItem.SubItems(intCol - 1) = InkEdit1.Text .SelectedItem.SubItems(Pxy(tbTitle, "金额") - 1) = _ InkEdit1 * .SelectedItem.SubItems(Pxy(tbTitle, "单价") - 1) ElseIf .ColumnHeaders(intCol) = "单价" Then .SelectedItem.SubItems(intCol - 1) = InkEdit1.Text .SelectedItem.SubItems(Pxy(tbTitle, "金额") - 1) = _ .SelectedItem.SubItems(Pxy(tbTitle, "数量") - 1) * InkEdit1 ElseIf .ColumnHeaders(intCol) = "金额" Then Else .SelectedItem.SubItems(intCol - 1) = InkEdit1.Text End IfElse '对应 类似 ElseIf currtable="tb?" Then
代码解释:
(1)如果是“收费项目”栏,查询单价填入,同时数量改为1,并计算金额。
(2)如果是单价、数量栏,重新计算金额。
(3)如果是金额栏,不做处理,实现金额不能手工修改的效果。
由于时间与篇幅的关系,今天就到这吧。后面会继续,敬请关注!还请大家多多点赞、留言、分享,谢谢大家,我们下期再会。
☆猜你喜欢☆

本文使用 文章同步助手 同步,本文于2023年5月29日首发于本人同名公众号,更多文章案例请搜索关注!