ad

《Excel VBA+SQL数据管理与应用模板开发》_7.5.4 根据合同号提取重要的相关数据

网友投稿 129 2023-11-07

【摘要】 本书摘自《Excel VBA+SQL数据管理与应用模板开发》一书中第7章,第5节,韩小良著。

7.5.4 根据合同号提取重要的相关数据

《Excel VBA+SQL数据管理与应用模板开发》_7.5.4 根据合同号提取重要的相关数据

当输入了合同号后,即可将该合同号对应的合同名称、单位代码(供货商代码)、开票 单位(供货商名称)提取出来,计算该合同的已付金额,并显示到相应的控件中,同时,自 动编制付款标记,因此,需要为“合同号”复合框设置Change 事件。程序代码如下:

Private Sub 合同号_Change)

Dim rs As ADODB.Recordset

Dim SQL As String

On Error Resume Next

'获取合同基本信息

Set rs =New ADODB.Recordset

SQL="select*from [合同信息$]"_

&"where 合同号="&合同号.Value&"""

rs.Open SQL,cnn,adOpenKeyset,adLockOptimistic

合同名称.Value =rs!合同名称

单位代码.Value =rs!供货商代码

开票单位.Value =rs!供货商名称

合同额=rs!合同额

'汇总该合同的付款金额

Set rs =New ADODB.Recordset

SQL="select sum(付款金额)as aa from[付款信息$]"_

&"where 合同号="&合同号.Value&"""

rs.Open SQL,cnn,adOpenKeyset,adLockOptimistic

已付金额=rs!aa

合同额显示.Caption="(合同额:"&Format(合同额,"#,##0.00")&")"

付款金额.Value =""

付款情况显示.Caption ="本次付款:"_

&Space(14-Len(Format(Val(付款金额.Value),"#,##.0.00")_

&Format(Val(付款金额.Value),"#,##.0.00")_

&vbCrLf&"已付金额:"&Space(14-Len(Format(已付金额,"#,##0.00"))_ &Format(已付金额,"#,##0.00")_

&vbCrLf&" 剩余未付:"&Space(14-_

Len(Format(Val(合同额)-Val(已付金额)-Val(付款金额.Value),"#,##0.00"))_ &Format(Val(合同额)-Val(已付金额)-Val(付款金额.Value),"#,##0.00")

If Val(合同额)=Val(已付金额)Then

付款标记.Value =""

Else

付款标记.Value= 合同号.Value&"-"_

&WorksheetFunction.CountIf(wsPay.Range("A:A"),合同号.Value)+1

End If

rs.Close

Set rs =Nothing

On Error GoTo 0

End Sub

输入付款日期

付款日期的输入是通过专门的输入日期小窗口完成的,也就是通过单击文本框旁边的小

按钮来完成的。程序代码如下:

Private Sub 输入付款日期_Click0

输入日期.Show

付款日期.Value =日期

End Sub

根据付款金额计算相关数据

为“付款金额”文本框设置Change 事件,当输入本次付款金额时,进行相关的计算, 在窗口中显示提示信息。程序代码如下:

Private Sub 付款金额_Change)

If 查询开关=True Then Exit Sub ‘如果查询窗口处于打开状态,就退出程序

'判断付款总额是否大于合同额

If Val(合同额)-Val(已付金额)-Val(付款金额.Value)<0 Then

If MsgBox("总付款额已超过合同额!是否继续输入?"_

vbQuestion+vbYesNo+vbDefaultButton2,"警告")=vbNo Then

付款金额.Value="n

Exit Sub

End If

End If

'显示付款情况

付款情况显示.Caption=" 本次付款:"_

&Space(14-Len(Format(Val(付款金额.Value),"#,##0.00"))_

&Format(Val(付款金额.Value),"#,##0.00")_

&vbCrLf&" 已付金额:"&Space(14-Len(Format (已付金额,"#,##0.00"))_ &Format(已付金额,"#,##0.00")_

&vbCrLf&" 剩余未付:"& Space(14-_

Len(Format(Val(合同额)-Val(已付金额)-Val(付款金额.Value),"#,##0.00"))_ &Format(Val(合同额)- Val(已付金额)-Val(付款金额.Value),",##0.00")

End Sub

7.5.7 新建付款信息

单击“新建”按钮,即可将窗口恢复初始化状态,准备输入新的发票信息。程序代码如下:

Private Sub 新建_Click0

Call 重置窗口

End Sub

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:《自己动手写 Python 虚拟机》_更理解虚拟机的意义_3.3 整理工程结构
下一篇:《深入理解 Java 虚拟机 JVM 高级特性与最佳实践(第3版)》_求知之路漫漫_3.2.2 可达性分析算法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×