Quản Lí Mượn Sách
Fri Nov 09, 2012 11:55 am
Đề Bài: Chúng ta có file CSDL.mdb bao gồm các bảng sau:
và Winform yêu cầu thiết kế như sau:
Yêu Cầu:
Hướng Giải Quyết:
Đối với yêu cầu 1:
tại vị trí nút thêm các bạn gõ đoạn code sau:
Tại ô ngày mượn, để xác định ngày mượn có lớn hơn ngày hiện tại hay không, ta sẽ sử dụng biến phụ a= Date string (với Date string là hàm xác định ngày tháng của hệ thống)
Với yêu cầu hiển thị dữ liệu khi click vào List Mã độc giả và combo mã sách các bạn tham khảo tại [You must be registered and logged in to see this link.] và [You must be registered and logged in to see this link.]
Tại ô Số lượng mượn: để kiểm tra số lượng mượn có đúng dạng sô (và phải dương) hoặc lớn hơn số lượng nhập hay không ta sử dụng dòng code sau:
riêng nút ghi, đưa dữ liệu từ form vào CSDL ta thực hiện như sau:
Ở đây, tôi không kiểm tra sự tồn tại của 1 số phiếu, nhưng sử dụng cách thức enable và disable đối với nút ghi, như vậy sẽ tránh tình trạng ghi 2 lần, thay vào đó nút ghi sẽ enable khi ta nhấn nút thêm 1 lần nữa.
Riêng nút lùi, tới, tôi sẽ có một bài hướng dẫn riêng.
Nút thoát, các bạn chỉ cần sử dụng đoạn code Me.close():
Còn đây là một lỗi khá thông dụng :
Lỗi này xuất hiện khi mã độc giả không có "-" nhưng vẫn được khai báo. để xử lí, ta chỉ cần xóa bỏ đoạn "Substring(0, madocgia.Text.IndexOf("-"))"
Và đây là kết quả cuối cùng:
Phần kết nối CSDL và Winform các bạn tham khảo tại [You must be registered and logged in to see this link.]
và Winform yêu cầu thiết kế như sau:
Yêu Cầu:
- Nhấn nút Thêm: Số Phiếu tự động tăng ( dạng "00.."), ô Ngày mượn, mã độc giả, họ tên, mã sách, tên sach, số lượng nhập, số lượng mượn trở về trống.
- Khi Enter tại ô ngày mượn, nếu không phải dạng ngày tháng hoặc lớn hơn ngày hiện tại thì báo lỗi.
Khi chọn mã độc giả, các ô họ tên, tự động hiển thị dữ liệu
Khi chọn Mã Sách: các ô tên sách, số lượng nhập tựu hiển thị.
Khi enter tại ô Số lượng mượn: nếu không phải dạng số, hoặc là số âm, hoặc lớn hơn số lượng nhập thì báo lỗi. Con trỏ đến nút Ghi.
Nút Ghi: ghi dữ liệu từ form vào CSDL, nếu tồn tại số phiếu thì báo lỗi.
Nút lùi, tới, Thoát để chuyển giữa các bản ghi và đống form.
Hướng Giải Quyết:
Đối với yêu cầu 1:
tại vị trí nút thêm các bạn gõ đoạn code sau:
- Code:
Private Sub them_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles them.Click
Dim dt As DataTable
dt = ketnoi.xulySQL("select sophieu from MUONSACH")
sophieu.Text = "00" & dt.Rows.Count + 1
ngay.Focus()
madocgia.Text = "Vui Lòng Chọn"
hoten.Text = ""
sach.Text = "Vui Lòng Chọn"
muon.Text = ""
ghi.Enabled = True
End Sub
Tại ô ngày mượn, để xác định ngày mượn có lớn hơn ngày hiện tại hay không, ta sẽ sử dụng biến phụ a= Date string (với Date string là hàm xác định ngày tháng của hệ thống)
- Code:
Private Sub ngay_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles ngay.KeyPress
If e.KeyChar = Chr(13) Then
Dim a As String
a = DateString
If Not IsDate(ngay.Text) Then
MsgBox("Vui Lòng nhạp đúng định dạng ngày tháng", MsgBoxStyle.OkOnly + MsgBoxStyle.Information, "SAI ĐỊNH DẠNG")
ngay.Focus()
ElseIf (CDate(ngay.Text) > (a)) Then
MsgBox(" Vui Lòng Nhập Lại Ngày Tháng", MsgBoxStyle.OkOnly + MsgBoxStyle.Information, "SAI")
ngay.Focus()
Else
madg.Focus()
End If
End If
End Sub
Với yêu cầu hiển thị dữ liệu khi click vào List Mã độc giả và combo mã sách các bạn tham khảo tại [You must be registered and logged in to see this link.] và [You must be registered and logged in to see this link.]
Tại ô Số lượng mượn: để kiểm tra số lượng mượn có đúng dạng sô (và phải dương) hoặc lớn hơn số lượng nhập hay không ta sử dụng dòng code sau:
- Code:
Private Sub muon_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles muon.KeyPress
Dim dt As DataTable
dt = ketnoi.xulySQL("select nhap from DMSACH")
If e.KeyChar = Chr(13) Then
If Not IsNumeric(muon.Text) Then
MsgBox("Vui Lòng Nhập Chính Xác Số Lượng")
muon.Focus()
ElseIf (muon.Text < 0) Then
MsgBox("Vui Lòng Nhập Số Lượng Dương vào Ô")
muon.Focus()
ElseIf ((muon.Text) > (nhap.Text)) Then
MsgBox(" Bạn Mượn Vượt số lượng hiện có của nhà sách")
muon.Focus()
Else
ghi.Focus()
End If
End If
End Sub
riêng nút ghi, đưa dữ liệu từ form vào CSDL ta thực hiện như sau:
- Code:
Private Sub ghi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ghi.Click
Dim dt As DataTable
If Len(ngay.Text) = 0 Then
MsgBox(" Vui Lòng Nhập Ngày Xuất")
ngay.Focus()
ElseIf Not IsDate(ngay.Text) Then
MsgBox("Sai Định Dạng Ngày Tháng!! Vui Lòng Nhập Lại")
ngay.Focus()
ElseIf (madocgia.Text) = "Vui Lòng Chọn" Then
MsgBox("Bạn Chưa Chọn Mã Độc Giả! Vui Lòng Chọn!")
madg.Focus()
ElseIf sach.Text = "Vui Lòng Chọn" Then
MsgBox("Bạn Chưa Chọn Mã Sách")
sach.Focus()
ElseIf muon.Text = "" Then
MsgBox("Vui Lòng Gõ Số Lượng Mượn")
muon.Focus()
ElseIf Not IsNumeric(muon.Text) Then
MsgBox("Vui Lòng Nhập Chính Xác Số Lượng Mượn")
muon.Focus()
ElseIf muon.Text < 0 Then
MsgBox(" Vui Lòng Nhập Số Lượng Dương")
muon.Focus()
Else
Dim st = "insert into MUONSACH(sophieu,ngay,madocgia,sach,muon) values ('" & sophieu.Text & "',#" & ngay.Text & "#,'" & madocgia.Text & "','" & sach.Text.Substring(0, sach.Text.IndexOf("-")) & "'," & muon.Text & ")"
dt = ketnoi.xulySQL(st)
MsgBox("Lưu Thành Công", MsgBoxStyle.OkOnly + MsgBoxStyle.Information, "THÀNH CÔNG")
ghi.Enabled = False
End If
End Sub
Ở đây, tôi không kiểm tra sự tồn tại của 1 số phiếu, nhưng sử dụng cách thức enable và disable đối với nút ghi, như vậy sẽ tránh tình trạng ghi 2 lần, thay vào đó nút ghi sẽ enable khi ta nhấn nút thêm 1 lần nữa.
Riêng nút lùi, tới, tôi sẽ có một bài hướng dẫn riêng.
Nút thoát, các bạn chỉ cần sử dụng đoạn code Me.close():
- Code:
Private Sub thoat_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles thoat.Click
Me.Close()
End Sub
Còn đây là một lỗi khá thông dụng :
Lỗi này xuất hiện khi mã độc giả không có "-" nhưng vẫn được khai báo. để xử lí, ta chỉ cần xóa bỏ đoạn "Substring(0, madocgia.Text.IndexOf("-"))"
Và đây là kết quả cuối cùng:
Phần kết nối CSDL và Winform các bạn tham khảo tại [You must be registered and logged in to see this link.]
- haili_vt3000Members
- Tổng số bài gửi : 7
Được Cảm Ơn : 0
Join date : 09/11/2012
Re: Quản Lí Mượn Sách
Fri Nov 09, 2012 12:00 pm
nguyên ngày hôm nay làm đc bài này hở , chiều kt bài này chắc trúng tửu =]]z
Permissions in this forum:
Bạn không có quyền trả lời bài viết