Chương 7: THIẾT KẾ GIAO DIỆN VÀ XÂY DỰNG MODUL CHƯƠNG TRÌNH
7.4. Thiết kế giao diện chức năng xử lí thông tin
7.4.1. Chức năng xử lí Bán vé cho khách
a. Giao diện.
b. Modul chương trình.
+ Chức năng mới:
- Hiện thị bảng bán vé cho khách.
- Nhập vé bán theo yêu cầu của khách theo tuyến luồng và xe đó phải đang
Ngày đặt, giờ đặt, ngày xe chạy, giờ xe chạy.
+ Chức năng hủy: Hủy các thao tác.
+ Chức năng xóa: Xóa các bản ghi ở bảng dữ liệu.
c. Code
Dim rsmv As ADODB.Recordset Dim nutmoi As Boolean
Dim vt As Variant
Dim rsxtb As ADODB.Recordset Dim rsDXG As ADODB.Recordset Dim rstuyen As ADODB.Recordset Dim rsxetaiben As ADODB.Recordset Dim d As Date
Dim giochay As Date Dim ngaychay As Date Dim socho As Byte Private Sub cbsg_Click()
If Timkiem("giave", "tuyen='" & cbtd.Text & "'") = True Then If Check1.Value = 1 Then
rschung.Filter = "chatluongcao='Chất lượng cao'"
Else
rschung.Filter = "chatluongcao='Không'"
End If
txtgv.Text = rschung!giave Else
MsgBox "Lỗi hệ thống", vbOKOnly + vbCritical, "Thông báo"
Exit Sub End If
Private Sub cbsg_GotFocus() Dim i As Byte
Dim cho_ngoi As String cbsg.Clear
For i = 1 To socho
cho_ngoi = Trim(Str(i))
If Timkiem("datve", "soxe='" & cbsx.Text & "' and soghe='" & cho_ngoi & "' and ((ngaychay = #" & Format(Date, "mm/dd/yyyy") & "# and giochay > #" &
Format(Time, "hh:mm") & "#) or (ngaychay > #" & Format(Date, "mm/dd/yyyy")
& "# )) ") = False Then cbsg.AddItem i Next i
End Sub
Private Sub cbsg_KeyPress(KeyAscii As Integer)
If Timkiem("giave", "tuyen='" & cbtd.Text & "'") = True Then If Check1.Value = 1 Then
rschung.Filter = "chatluongcao='Chất lượng cao'"
Else
rschung.Filter = "chatluongcao='Không'"
End If
txtgv.Text = rschung!giave Else
MsgBox "Lỗi hệ thống", vbOKOnly + vbCritical, "Thông báo"
If Timkiem("xetaiben", "soxe='" & cbsx.Text & "' and ((ngayxuat = #" &
Format(Date, "mm/dd/yyyy") & "# and giochay > #" & Format(Time, "hh:mm") &
"#) or (ngayxuat > #" & Format(Date, "mm/dd/yyyy") & "# ) )") = True Then ngaychay = rschung!ngayxuat
giochay = rschung!giochay Else
MsgBox "Xe này đã chạy", vbOKOnly + vbInformation, "Thông báo"
End If
Dim i As Byte
If Timkiem("soxe", "soxe='" & cbsx.Text & "'") = True Then socho = rschung!soghe
End If End Sub
Private Sub cbsx_GotFocus()
rsDXG.Open "SELECT Soxe.soxe, Soxe.soghe, Soxe.chatluongcao, Xetaiben.tuyen, Xetaiben.ngayxuat, Xetaiben.Giochay, Giave.giave " & _
"FROM (Soxe INNER JOIN Xetaiben ON Soxe.soxe = Xetaiben.soxe) INNER JOIN Giave ON (Soxe.chatluongcao = Giave.chatluongcao) AND (Xetaiben.tuyen
= Giave.tuyen) where ((ngayxuat = #" & Format(Date, "mm/dd/yyyy") & "# and giochay > #" & Format(Time, "hh:mm") & "#) or (ngayxuat > #" & Format(Date,
"mm/dd/yyyy") & "# )) and xetaiben.tuyen='" & cbtd.Text & "'", kn, adOpenDynamic, adLockOptimistic
cbsx.Clear
If Check1.Value = 1 Then
rsDXG.Filter = "chatluongcao='Chất lượng cao'"
Else
If rsDXG.RecordCount > 0 Then rsDXG.MoveFirst
cbsx.Clear
Do While Not rsDXG.EOF cbsx.AddItem rsDXG!Soxe rsDXG.MoveNext
Loop Else
MsgBox "Hết xe", vbOKOnly + vbInformation, "Thông báo"
Call sang(Me, True) End If
rsDXG.Close End Sub
Private Sub cmdghi_Click() If txtgv.Text = "" Then
MsgBox "Mời bạn chọn thông tin lại", vbOKOnly + vbInformation, "Thông báo"
Exit Sub End If
If nutmoi = True Then rsmv.AddNew Else
rsmv.Bookmark = vt End If
rsmv!giave = txtgv.Text rsmv.Update
Call sang(Me, True) End Sub
Private Sub cmdhuy_Click() Call sang(Me, True)
Call xoatext(Me) End Sub
Private Sub cmdmoi_Click() Call xoatext(Me)
nutmoi = True Call sang(Me, False) End Sub
Private Sub cmdsua_Click() If cbsx.Text = "" Then
MsgBox "Hãy chọn bản ghi cần sửa", vbOKOnly + vbExclamation, "Thông báo"
Exit Sub End If
Call sang(Me, False) vt = rsmv.Bookmark nutmoi = False End Sub
Private Sub cmdthoat_Click()
If MsgBox("Có chắc là bạn muốn thoát không?", vbOKCancel + vbQuestion,
Private Sub cmdxoa_Click()
If MsgBox("Có chắc là bạn muốn xóa bản ghi này", vbOKCancel + vbQuestion,
"Thông báo") = vbOK Then rsmv.Delete If rsmv.RecordCount = 0 Then
cmdmoi.Enabled = False cmdsua.Enabled = False End If
End Sub
Private Sub DataGrid1_Click() vt = rsmv.Bookmark
ht
End Sub
Private Sub ht()
If rsmv.RecordCount > 0 Then cbsx.Text = rsmv!Soxe
Dim bs As String bs = cbsx.Text
If Timkiem("xetaiben", "soxe='" & bs & "' and ((ngayxuat >= #" & Format(Date,
"mm/dd/yyyy") & "# and giochay > #" & Format(Time, "hh:mm") & "#) or (ngayxuat > #" & Format(Date, "mm/dd/yyyy") & "# )) ") = True Then cbtd.Text = rschung!tuyen
If Timkiem("soxe", "soxe='" & cbsx.Text & "'") = True Then
cbsg.Text = rsmv!soghe txtgv.Text = rsmv!giave End If
End Sub
Private Sub Form_Load() Call sang(Me, True)
Set rsDXG = New ADODB.Recordset Call modulieu(rsxtb, "Xetaiben") Call modulieu(rstuyen, "luongchay") If rstuyen.RecordCount > 0 Then rstuyen.MoveFirst
Do While Not rstuyen.EOF cbtd.AddItem rstuyen!tuyen rstuyen.MoveNext
Loop
Set rsmv = New ADODB.Recordset
rsmv.Open "select * from datve where ngay= # " & Format(Date, "mm/dd/yyyy") &
" # ", kn, adOpenDynamic, adLockOptimistic Set DataGrid1.DataSource = rsmv
End If ht
End Sub.