frmformprocess.frm
来自「本人用VB 6.0和ACCESS编写的水费管理系统」· FRM 代码 · 共 1,143 行 · 第 1/3 页
FRM
1,143 行
Width = 810
End
Begin VB.Label Label30
AutoSize = -1 'True
Caption = "合计金额:"
Height = 180
Left = 6120
TabIndex = 70
Top = 5160
Width = 810
End
Begin VB.Label Label31
AutoSize = -1 'True
Caption = "是否录单:"
Height = 180
Left = 6120
TabIndex = 72
Top = 5640
Width = 810
End
End
End
End
Attribute VB_Name = "frmFormProcess"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Dim db As Database, rs As Recordset
Dim fso As New FileSystemObject
Dim curWaterPrice(5) As Currency, curWaterDirty(5) As Currency
Dim WaterMeter(9) As Long, WaterLimit(9) As Long
Dim InputIndex As Integer, RegionIndex As Integer
Private Sub cmdExit_Click(Index As Integer)
Unload Me
End Sub
Private Sub cmdRefresh_Click()
'只有多用户应用程序需要
On Error GoTo RefreshErr
Data1.Refresh
Exit Sub
RefreshErr:
MsgBox Err.Description
End Sub
Private Sub cmdUpdate_Click(Index As Integer)
On Error GoTo UpdateErr
Data1.UpdateRecord
Exit Sub
UpdateErr:
MsgBox Err.Description
End Sub
Private Sub comRegion_Click(Index As Integer)
'根据分区号选择分区
Dim RegionNumber As Integer, strSQL As String
RegionNumber = comRegion(Index).ListIndex + 1
RegionIndex = RegionNumber
Select Case Index
Case 0 '表单录入
strSQL = "select * from 主库文件 where 分区=" & RegionNumber
Case 1 '表单编辑
Select Case InputIndex
Case 0 '分区及已录单
strSQL = "select * from 主库文件 where 分区=" & RegionNumber _
& " and 录单=True"
Case 1 '分区及未录单
strSQL = "select * from 主库文件 where 分区=" & RegionNumber _
& " and 录单=False"
End Select
End Select
Data1.RecordSource = strSQL
Data1.Refresh
End Sub
Private Sub Data1_Reposition()
Data1.Caption = "记录:" & Data1.Recordset.AbsolutePosition + 1
End Sub
Private Sub Form_Load()
'水表直径与起收底数
WaterMeter(1) = 20: WaterMeter(2) = 25: WaterMeter(3) = 32
WaterMeter(4) = 40: WaterMeter(5) = 50: WaterMeter(6) = 80
WaterMeter(7) = 100: WaterMeter(8) = 150: WaterMeter(9) = 200
WaterLimit(1) = 4: WaterLimit(2) = 8: WaterLimit(3) = 15
WaterLimit(4) = 25: WaterLimit(5) = 40: WaterLimit(6) = 60
WaterLimit(7) = 80: WaterLimit(8) = 200: WaterLimit(9) = 300
Dim strOpenName As String
strOpenName = App.Path & "\Main" & Year(Now) & Month(Now) & ".mdb"
'设定数据控件属性
Data1.DatabaseName = strOpenName
Data1.RecordSource = "主库文件"
'将表单录入字段加入
txtFields1(0).DataField = "编号": txtFields1(1).DataField = "户型"
txtFields1(2).DataField = "户名": txtFields1(3).DataField = "地址"
txtFields1(4).DataField = "本月读数": txtFields1(5).DataField = "上月读数"
txtFields1(6).DataField = "发票号": txtFields1(7).DataField = "新表止码"
txtFields1(8).DataField = "新表起码": txtFields1(9).DataField = "实用水量"
txtFields1(10).DataField = "排污费金额": txtFields1(11).DataField = "水费"
txtFields1(12).DataField = "水费金额"
txtFields1(13).DataField = "合计金额": txtFields1(14).DataField = "污水处理费"
txtFields1(15).DataField = "金额大写": txtFields1(16).DataField = "污水处理费折扣"
txtFields1(18).DataField = "分区"
'将表单编辑字段加入
txtFields2(0).DataField = "上月读数": txtFields2(1).DataField = "本月读数"
txtFields2(2).DataField = "新表起码": txtFields2(3).DataField = "新表止码"
txtFields2(4).DataField = "发票号": txtFields2(5).DataField = "实用水量"
txtFields2(6).DataField = "排污费金额": txtFields2(7).DataField = "水费金额"
txtFields2(8).DataField = "合计金额"
Dim i As Integer
For i = 0 To 1
comStyle(i).DataField = "表单类型"
comStyle(i).AddItem "正常表单": comStyle(i).AddItem "本月调表"
comStyle(i).AddItem "临时录单": comStyle(i).AddItem "表黑暂开"
comStyle(i).AddItem "表停暂开": comStyle(i).AddItem "表坏暂开"
Next
For i = 0 To 1
chkInput(i).DataField = "录单"
Next
'加入分区数
For i = 1 To RegionNumber
comRegion(0).AddItem i
comRegion(1).AddItem i
Next
'刷新数据控件
Data1.Refresh
'读取水费价格
Set db = Workspaces(0).OpenDatabase(App.Path & "\水费标准库.mdb", False, True)
Set rs = db.OpenRecordset("水费标准")
rs.MoveFirst
For i = 1 To 5
curWaterPrice(i) = rs.Fields("收费标准")
curWaterDirty(i) = rs.Fields("污水处理费")
rs.MoveNext
If rs.EOF Then rs.MoveLast
Next
rs.Close
db.Close
Set rs = Nothing
Set db = Nothing
End Sub
Private Sub optInput_Click(Index As Integer)
Dim strSQL As String
Select Case Index
Case 0 '已录单用户
InputIndex = 0
strSQL = "select * from 主库文件 where 分区=" & RegionIndex _
& " and 录单=True"
Case 1 '未录单用户
InputIndex = 1
strSQL = "select * from 主库文件 where 分区=" & RegionIndex _
& " and 录单=False"
End Select
Data1.RecordSource = strSQL
Data1.Refresh
End Sub
Private Sub txtFields1_LostFocus(Index As Integer)
Select Case Index
Case 4 '本月读数
Dim WI As Long, i As Integer, WJ As Integer
WI = Data1.Recordset.Fields("水表直径")
For i = 1 To 9
If WaterMeter(i) = WI Then WJ = i
Next
If Val(txtFields1(Index)) < WaterLimit(WJ) Then
MsgBox "起收底数为" & WaterLimit(WJ) & "吨!", vbExclamation + vbOKOnly, "表单录入"
txtFields1(Index).SetFocus
SendKeys "{Home}+{End}"
Exit Sub
End If
Dim strAppName As String, CYear As Integer, CMonth As Integer
CYear = Year(Now)
CMonth = Month(Now) '当月月份
If CMonth = 1 Then
CYear = CYear - 1 '上一年
CMonth = 12 '12月
Else
CMonth = CMonth - 1 '上一月
End If
strAppName = App.Path & "\Main" & CYear & CMonth & ".mdb"
If fso.FileExists(strAppName) Then
Set db = Workspaces(0).OpenDatabase(strAppName, False, True)
Set rs = db.OpenRecordset("主库文件")
rs.MoveFirst
rs.Move Data1.Recordset.AbsolutePosition
txtFields1(5).Text = Str(rs.Fields("本月读数"))
rs.Close
db.Close
Set rs = Nothing
Set db = Nothing
Else
txtFields1(5).Text = Str(0)
End If
'计算实用水量
Dim lngWaterQuantity As Long
lngWaterQuantity = Val(txtFields1(4)) - Val(txtFields1(5))
If lngWaterQuantity < 0 Then
MsgBox "本月读数小于上月读数!", vbExclamation + vbOKOnly, "表单录入"
txtFields1(4).SetFocus
SendKeys "{Home}+{End}"
Exit Sub
End If
txtFields1(9).Text = Str(lngWaterQuantity)
'读取户型
Dim intUserType As Integer
intUserType = Val(Right(txtFields1(1), 2))
'计算金额
Dim WaterPrice As Currency, WaterDirty As Currency
Dim WaterTotal As Currency
WaterPrice = lngWaterQuantity * curWaterPrice(intUserType)
WaterDirty = lngWaterQuantity * curWaterDirty(intUserType)
WaterTotal = WaterPrice + WaterDirty
'写入字段
txtFields1(10).Text = Str(WaterDirty)
txtFields1(11).Text = Str(WaterPrice)
txtFields1(12).Text = Str(WaterPrice)
txtFields1(13).Text = Str(WaterTotal)
txtFields1(14).Text = Str(WaterDirty)
txtFields1(16).Text = "1"
'转换为金额大写
Dim strNumber As String, WaterTotalCopy As Currency
Dim MaxNum As Integer, PerNum As Long
Dim lngI As Long
WaterTotalCopy = Int(WaterTotal)
MaxNum = Len(Str(WaterTotalCopy)) - 1
strNumber = ""
If WaterTotalCopy = 0 Then strNumber = strNumber & ShiftPrice(0)
For i = MaxNum To 1 Step -1
lngI = 10 ^ (i - 1)
PerNum = WaterTotalCopy \ lngI
If PerNum <> 0 Then
strNumber = strNumber & ShiftPrice(PerNum)
If i > 1 Then
strNumber = strNumber & ShiftPrice(lngI)
End If
End If
WaterTotalCopy = WaterTotalCopy - PerNum * lngI
If PerNum = 0 And WaterTotalCopy <> 0 Then
strNumber = strNumber & ShiftPrice(0)
End If
Next
strNumber = strNumber & "元"
'转换小数
WaterTotalCopy = WaterTotal - Int(WaterTotal)
If WaterTotalCopy = 0 Then strNumber = strNumber & "整"
PerNum = Int(WaterTotalCopy * 10)
If PerNum <> 0 Then
strNumber = strNumber & ShiftPrice(PerNum)
strNumber = strNumber & "角"
End If
WaterTotalCopy = WaterTotalCopy - PerNum / 10
PerNum = WaterTotalCopy * 100
If PerNum <> 0 Then
strNumber = strNumber & ShiftPrice(PerNum)
strNumber = strNumber & "分"
End If
txtFields1(15).Text = strNumber
End Select
End Sub
Private Function ShiftPrice(PriceNum As Long) As String
Select Case PriceNum
Case 0
ShiftPrice = "零"
Case 1
ShiftPrice = "壹"
Case 2
ShiftPrice = "贰"
Case 3
ShiftPrice = "叁"
Case 4
ShiftPrice = "肆"
Case 5
ShiftPrice = "伍"
Case 6
ShiftPrice = "陆"
Case 7
ShiftPrice = "柒"
Case 8
ShiftPrice = "捌"
Case 9
ShiftPrice = "玖"
Case 10
ShiftPrice = "拾"
Case 100
ShiftPrice = "佰"
Case 1000
ShiftPrice = "仟"
Case 10000
ShiftPrice = "万"
Case 100000
ShiftPrice = "十万"
End Select
End Function
Private Sub txtFields2_LostFocus(Index As Integer)
Select Case Index
Case 1 '本月读数
Dim WI As Long, i As Integer, WJ As Integer
WI = Data1.Recordset.Fields("水表直径")
For i = 1 To 9
If WaterMeter(i) = WI Then WJ = i
Next
If Val(txtFields2(Index)) < WaterLimit(WJ) Then
MsgBox "起收底数为" & WaterLimit(WJ) & "吨!", vbExclamation + vbOKOnly, "表单录入"
txtFields2(Index).SetFocus
SendKeys "{Home}+{End}"
Exit Sub
End If
txtFields2(0).Text = txtFields1(5).Text '上月读数
'计算实用水量
Dim lngWaterQuantity As Long
lngWaterQuantity = Val(txtFields2(1)) - Val(txtFields2(0))
If lngWaterQuantity < 0 Then
MsgBox "本月读数小于上月读数!", vbExclamation + vbOKOnly, "表单录入"
txtFields2(1).SetFocus
SendKeys "{Home}+{End}"
Exit Sub
End If
txtFields2(5).Text = Str(lngWaterQuantity)
'读取户型
Dim intUserType As Integer
intUserType = Val(Right(txtFields1(1), 2))
'计算金额
Dim WaterPrice As Currency, WaterDirty As Currency
Dim WaterTotal As Currency
WaterPrice = lngWaterQuantity * curWaterPrice(intUserType)
WaterDirty = lngWaterQuantity * curWaterDirty(intUserType)
WaterTotal = WaterPrice + WaterDirty
'写入字段
txtFields2(6).Text = Str(WaterDirty)
txtFields2(7).Text = Str(WaterPrice)
txtFields2(8).Text = Str(WaterTotal)
txtFields1(11).Text = Str(WaterPrice)
txtFields1(14).Text = Str(WaterDirty)
'转换为金额大写
Dim strNumber As String, WaterTotalCopy As Currency
Dim MaxNum As Integer, PerNum As Long
Dim lngI As Long
WaterTotalCopy = Int(WaterTotal)
MaxNum = Len(Str(WaterTotalCopy)) - 1
strNumber = ""
If WaterTotalCopy = 0 Then strNumber = strNumber & ShiftPrice(0)
For i = MaxNum To 1 Step -1
lngI = 10 ^ (i - 1)
PerNum = WaterTotalCopy \ lngI
If PerNum <> 0 Then
strNumber = strNumber & ShiftPrice(PerNum)
If i > 1 Then
strNumber = strNumber & ShiftPrice(lngI)
End If
End If
WaterTotalCopy = WaterTotalCopy - PerNum * lngI
If PerNum = 0 And WaterTotalCopy <> 0 Then
strNumber = strNumber & ShiftPrice(0)
End If
Next
strNumber = strNumber & "元"
'转换小数
WaterTotalCopy = WaterTotal - Int(WaterTotal)
If WaterTotalCopy = 0 Then strNumber = strNumber & "整"
PerNum = Int(WaterTotalCopy * 10)
If PerNum <> 0 Then
strNumber = strNumber & ShiftPrice(PerNum)
strNumber = strNumber & "角"
End If
WaterTotalCopy = WaterTotalCopy - PerNum / 10
PerNum = WaterTotalCopy * 100
If PerNum <> 0 Then
strNumber = strNumber & ShiftPrice(PerNum)
strNumber = strNumber & "分"
End If
txtFields1(15).Text = strNumber
End Select
End Sub
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?