📄 frmcustpayoff.frm
字号:
Top = 360
Width = 765
End
End
Begin VB.Frame Frame2
Caption = "顾客住房信息"
Height = 1815
Left = 600
TabIndex = 2
Top = 1200
Width = 3135
Begin VB.Label labBreakfastInfo
AutoSize = -1 'True
ForeColor = &H00C000C0&
Height = 195
Left = 1320
TabIndex = 17
Top = 1440
Width = 45
End
Begin VB.Label Label4
AutoSize = -1 'True
Caption = "使用早餐情况:"
Height = 195
Left = 120
TabIndex = 16
Top = 1440
Width = 1125
End
Begin VB.Label labUseDays
AutoSize = -1 'True
ForeColor = &H00C000C0&
Height = 195
Left = 960
TabIndex = 9
Top = 1080
Width = 45
End
Begin VB.Label labBeginToUseDate
AutoSize = -1 'True
ForeColor = &H00C000C0&
Height = 195
Left = 1320
TabIndex = 8
Top = 720
Width = 45
End
Begin VB.Label labCustName
AutoSize = -1 'True
ForeColor = &H00C000C0&
Height = 195
Left = 600
TabIndex = 7
Top = 360
Width = 45
End
Begin VB.Label Label3
AutoSize = -1 'True
Caption = "住房天数:"
Height = 195
Left = 120
TabIndex = 6
Top = 1080
Width = 765
End
Begin VB.Label Label2
AutoSize = -1 'True
Caption = "入住房间日期:"
Height = 195
Left = 120
TabIndex = 5
Top = 720
Width = 1125
End
Begin VB.Label Label1
AutoSize = -1 'True
Caption = "姓名:"
Height = 195
Left = 120
TabIndex = 4
Top = 360
Width = 405
End
End
Begin VB.Frame Frame1
Caption = "请选择要顾客要结帐的房间号"
Height = 735
Left = 600
TabIndex = 0
Top = 360
Width = 3135
Begin VB.ComboBox cboRoomNo
Height = 315
Left = 120
Style = 2 'Dropdown List
TabIndex = 1
Top = 240
Width = 2415
End
End
End
Attribute VB_Name = "frmCustPayOff"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Private cnnHotel As New ADODB.Connection
Private rsPayOff As New ADODB.Recordset
Private rsRooms As New ADODB.Recordset
Private Sub cboRoomNo_Click()
Frame2.Caption = cboRoomNo.Text & "顾客的信息"
Frame3.Caption = cboRoomNo.Text & "顾客应付费用"
rsPayOff.Open "SELECT * FROM CustPayOff WHERE 顾客预定房间号='" & cboRoomNo.Text & "' AND 顾客状态='已经入住'", cnnHotel, adOpenKeyset, adLockOptimistic '打开记录集
Set labCustName.DataSource = rsPayOff
labCustName.DataField = "顾客姓名"
Set labBeginToUseDate.DataSource = rsPayOff
labBeginToUseDate.DataField = "顾客入住房间日期"
Set labBreakfastInfo.DataSource = rsPayOff
labBreakfastInfo.DataField = "顾客使用早餐情况"
rsPayOff.Close '关闭记录集
labUseDays.Caption = CountUseDays & " 天"
labBfCharge.Caption = ChargeBreakfast & " 元"
labRoomCharge.Caption = UseRoomCharge & " 元"
labTotalCharge.Caption = TotalCharge & " 元"
labRoomNo.Caption = cboRoomNo.Text & "每晚价格:"
labRoomNo.Visible = True
Select Case Left(cboRoomNo.Text, 1)
Case 1 To 10 '如果是1号房间到10号房间之间的房间
labChargeRoom.Caption = "10元"
Case 11 To 15 '如果是11号房间到15号房间之间的房间
labChargeRoom.Caption = "15元"
Case 16 To 20 '如果是16号房间到20号房间之间的房间
labChargeRoom.Caption = "20元"
End Select
End Sub
Private Sub cmdCancel_Click()
Dim msg
msg = MsgBox("确定要退出吗?", vbQuestion + vbOKCancel, "退出")
If msg = vbOK Then
Unload frmCustPayOff
End If
End Sub
Private Sub cmdOk_Click()
If cboRoomNo.Text = "" Then '如果没有选择房间
MsgBox "请选择一个房间号!", vbInformation, "提示"
cboRoomNo.SetFocus
Exit Sub
ElseIf Val(txtRealCharge.Text) < 0 Then '如果实付金额小于0
MsgBox "实付金额不能小于0!", vbInformation, "提示"
txtRealCharge.SetFocus
Exit Sub
ElseIf Not IsNumeric(txtRealCharge.Text) Then '如果实付金额不是数值类型
MsgBox "实付金额不能为空且不能为非数值类型!", vbInformation, "错误"
txtRealCharge.SetFocus
Exit Sub
End If
rsPayOff.Open "SELECT * FROM CustPayOff WHERE 顾客预定房间号='" & cboRoomNo.Text & "' AND 顾客状态='已经入住'", cnnHotel, adOpenKeyset, adLockOptimistic '打开记录集
rsRooms.Open "SELECT * FROM Rooms WHERE 房间号='" & cboRoomNo.Text & "'", cnnHotel, adOpenKeyset, adLockOptimistic '打开记录集
cnnHotel.BeginTrans
rsPayOff.Update "顾客退房日期", Year(Date) & "年" & Month(Date) & "月" & Day(Date) & "日"
rsPayOff.Update "顾客住房天数", Val(labUseDays.Caption)
rsPayOff.Update "顾客应付总金额", Val(labTotalCharge.Caption)
rsPayOff.Update "顾客实付总金额", Val(txtRealCharge.Text)
rsPayOff.Update "顾客状态", "已经退房"
rsRooms.Update "房间预定日期", ""
rsRooms.Update "房间状态", "空闲" '修改房间状态
rsRooms.Update "顾客姓名", ""
rsRooms.Update "房间入住日期", ""
cnnHotel.CommitTrans
MsgBox cboRoomNo.Text & "顾客退房完成!", vbInformation, "提示"
Unload frmCustPayOff
End Sub
Private Sub Form_Load()
cnnHotel.Provider = "Microsoft.Jet.OLEDB.3.51"
cnnHotel.Open "User ID=admin;Data Source=" & GetDBPath() '建立与数据库的连接
rsRooms.Open "SELECT 房间号,房间状态 FROM Rooms WHERE 房间状态='已经入住'", cnnHotel, adOpenKeyset, adLockOptimistic '打开新记录集
Do While Not rsRooms.BOF And Not rsRooms.EOF
cboRoomNo.AddItem rsRooms.Fields("房间号") '在cboRoomNo 的下拉列表选项中加如当前的已经被预定的房间号
rsRooms.MoveNext '移到下一条记录
Loop
rsRooms.Close '关闭记录集
End Sub
Private Sub Form_Unload(Cancel As Integer)
cnnHotel.Close
End Sub
Private Function ChargeBreakfast() '计算顾客使用早餐应该付的费用
Dim i As Integer
Dim charge As Single
charge = 0
For i = 1 To Len(labBreakfastInfo.Caption)
Select Case Mid(labBreakfastInfo.Caption, i, 1)
Case "A" '如果是A类早餐
charge = charge + 1
Case "B" '如果是B类早餐
charge = charge + 1.2
Case "C" '如果是C类早餐
charge = charge + 1.6
Case "D" '如果是D类早餐
charge = charge + 2
Case "E" '如果是E类早餐
charge = charge + 2.5
End Select
Next i
ChargeBreakfast = charge
End Function
Private Function CountUseDays() '计算顾客使用房间的天数
CountUseDays = Date - CDate(labBeginToUseDate.Caption)
End Function
Private Function UseRoomCharge() '计算顾客使用房间应该付的费用
Select Case Left(cboRoomNo.Text, 1)
Case 1 To 10 '如果是1号房间到10号房间之间的房间
UseRoomCharge = CountUseDays * 10
Exit Function
Case 11 To 15 '如果是11号房间到15号房间之间的房间
UseRoomCharge = CountUseDays * 15
Exit Function
Case 16 To 20 '如果是16号房间到20号房间之间的房间
UseRoomCharge = CountUseDays * 20
Exit Function
End Select
End Function
Private Function TotalCharge() '计算总费用
TotalCharge = UseRoomCharge + ChargeBreakfast '总费用是住房费用和早餐费用之和
End Function
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -