Chương 4 Xây dựng các màn hình danh mục
4.5 Màn hình thể loại sách
Tương tự chúng ta thiết kế màn hình thể loại sách như sau
STT Tên Control Loại Tên hàm xử lý
1 TLList ListView
2 txtTenTheLoai TextBox
3 btnThem Button btnThem_Click
4 btnXoa Button btnXoa_Click
5 btnCapNhat Button btnCapNhat_Click
6 btnSoanLai Button btnSoanLai_Click
Màn hình thể loại sách cũng được cài đặt thành 2 lớp: Một lớp là TheLoaiSach_Form, lớp Form với các Controls trên nó (như hình trên), lớp còn lại có vai trò xử lý cho form này - TheLoaiSach.
4.5.1 Lớp TheLoaiSach_Form
Trước hết, khi form được load lên ta cần hiển thị các thông tin về các thể loại sách đã có trong cơ sở dữ liệu lên trên listview. Do đó, trong hàm TheLoaiSach_Form_Load ta sẽ gọi hàm HienThiDanhSachTheLoaiSach như sau:
Private Sub TheLoaiSach_Form_Load(ByVal sender As System.Object, ByVal e As
Chương 4 - Xây dựng các màn hình danh mục
72
Private Sub HienThiDanhSachTheLoai() TLList.Items.Clear()
Dim i As Integer Dim str As String Dim dt As DataTable
dt = tl.LayDanhSachTheLoai
'Hiển thị danh sách thể loại sách For i = 0 To dt.Rows.Count - 1 Dim lvi As ListViewItem
lvi = TLList.Items.Add((i + 1).ToString) str = dt.Rows(i)("TenTheLoai")
lvi.SubItems.Add(str) Next
End Sub
Mục tiêu của hàm này là lấy thông tin các thể loại sách được trả ra từ phương thức LayDanhSachTheLoaiSach rồi đưa lên trên listview. Còn phương thức
LayDanhSachTheLoaiSach là một phương thức thuộc lớp TheLoaiSach, sẽ được đề cập trong phần sau.
Tiếp theo, tương tự như trong màn hình bằng cấp, chúng ta phát sinh các sự kiện click cho cac nút nhấn Thêm, Xóa, Cập nhật và Soạn lại và tiến hành cài đặt như sau:
Private Sub btnThem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnThem.Click
If txtTenTheLoai.Text <> "" Then
tl.ThemTheLoai(txtTenTheLoai.Text) HienThiDanhSachTheLoai()
MessageBox.Show("Thêm thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information) txtTenTheLoai.Text = ""
Else
MessageBox.Show("Bạn chưa nhập tên thể loại", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning)
End If End Sub
Private Sub btnXoa_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnXoa.Click
If TLList.SelectedIndices.Count > 0 Then Dim str As String
str =
TLList.Items(TLList.SelectedIndices.Item(0)).SubItems(1).Text If MessageBox.Show("Bạn có chắc chắn là muốn xóa thể loại '" +
str + "' không ?", "Hỏi lại", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then
tl.XoaTheLoai(TLList.SelectedIndices.Item(0)) 'Xoa theloai nay khoi list
TLList.Items.Remove(TLList.SelectedItems(0)) 'Thông báo xóa thành công
MessageBox.Show("Thể loại '" + txtTenTheLoai.Text + "' đã được xóa.", "Thông báo", MessageBoxButtons.OK,
MessageBoxIcon.Information) txtTenTheLoai.Text = ""
End If Else
MessageBox.Show("Bạn phải chọn 1 thể loại trong danh sách trước", "Thông báo", MessageBoxButtons.OK,
MessageBoxIcon.Exclamation) End If
End Sub
Private Sub btnCapNhat_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCapNhat.Click
If TLList.SelectedIndices.Count > 0 Then If txtTenTheLoai.Text <> "" Then
tl.CapNhatTheLoai(TLList.SelectedIndices.Item(0), txtTenTheLoai.Text)
HienThiDanhSachTheLoai()
MessageBox.Show("Thể loại '" + txtTenTheLoai.Text + "' đã được cập nhật thành công", "Thông báo",
MessageBoxButtons.OK, MessageBoxIcon.Information) txtTenTheLoai.Text = ""
End If Else
MessageBox.Show("Bạn phải chọn 1 thể loại trong danh sách trước", "Thông báo", MessageBoxButtons.OK,
MessageBoxIcon.Exclamation) End If
End Sub
Private Sub btSoanLai_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btSoanLai.Click
txtTenTheLoai.Text = ""
End Sub
Và sau đó chúng ta phát sính sự kiện SelectedTextChanged của control TLList tương tự như màn hình bằng cấp ở trên, và cài đặt như sau:
Private Sub TLList_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TLList.SelectedIndexChanged
If TLList.SelectedIndices.Count > 0 Then txtTenTheLoai.Text =
TLList.Items(TLList.SelectedIndices.Item(0)).SubItems(1).Text End If
Chương 4 - Xây dựng các màn hình danh mục
74
Db Database Đảm nhiệm việc giao tiếp với
CSDL
tl_dt DataTable Chứa danh sách các chức vụ
Phương thức
Tên Ý nghĩa
New Hàm tạo (Constructor)
LayDanhSachTheLoai Lấy danh sách các thể loại sách từ cơ sỏ dữ liệu ThemTheLoai Thêm 1 thể loại sách vào CSDL
XoaTheLoai Xóa một thể loại sách khỏi CSDL CapNhatTheLoai Cập nhật lại thông tin của 1 thể loại sách 4.5.2.1 Hàm tạo
Mã nguồn:
Public Sub New()
db = New Database(MainForm.SvrName, MainForm.DbName, True, "", "")
‘SvrName và DbName là 2 biến tĩnh (shared) của lớp MainForm) End Sub
4.5.2.2 LayDanhSachTheLoai Kết quả trả về:
Kiểu / Lớp Ý nghĩa
DataTable Danh sách các thể loại sách có trong CSDL Mã nguồn:
Public Function LayDanhSachTheLoai() As DataTable
tl_dt = db.Execute("Select * from THELOAISACH order by MaTheLoai") Return tl_dt
End Function
4.5.2.3 ThemTheLoai Tham số:
Tên Kiểu / Lớp Ý nghĩa
ten String Tên thể loại sách cần thêm vào (mã thể loại sách tương ứng sẽ được chương trình tự phát sinh)
Mã nguồn:
Public Sub ThemTheLoai(ByVal ten As String) Dim dt As DataTable
dt = db.Execute("select MaTheLoai from THELOAISACH where MaTheLoai
>= all (select MaTheLoai from THELOAISACH)") 'Chung ta biet chac rang dt chi co 1 dong Dim MaTL As Integer
MaTL = dt.Rows(0)(0) + 1 Dim str As String
str = "Insert into THELOAISACH values(" + MaTL.ToString + ",N'" + ten + "')"
db.ExecuteNonQuery(str)
LayDanhSachTheLoai() End Sub
4.5.2.4 XoaTheLoai Tham số:
Tên Kiểu / Lớp Ý nghĩa
index Integer Số thứ tự của thể loại cần xóa. Lưu ý rằng thứ tự các thể loại được đưa lên màn hình hiển thị phải giống với thứ tự chúng được lấy ra bằng câu lệnh Select.(chú ý bỏ thuộc tính sort của ListView)
Mã nguồn:
Public Sub XoaTheLoai(ByVal index As Integer) Dim str As String
str = "delete from THELOAISACH where MaTheLoai = " + tl_dt.Rows(index)("MaTheLoai").ToString
db.ExecuteNonQuery(str) 'update data table tl_dt tl_dt.Rows.RemoveAt(index) End Sub
4.5.2.5 CapNhatTheLoai Tham số:
Tên Kiểu / Lớp Ý nghĩa
Index Integer Số thứ tự của thể loại cần xóa. Lưu ý rằng thứ tự các thể loại sách được đưa lên màn hình hiển thị phải giống với thứ tự chúng được lấy ra bằng câu lệnh Select.
Ten String Tên thể loại sách cần cập nhật.
Mã nguồn:
Public Sub CapNhatTheLoai(ByVal index As Integer, ByVal ten As String) Dim str As String
str = "Update THELOAISACH set TenTheLoai = N'" + ten + "' where MaTheLoai = " + tl_dt.Rows(index)("MaTheLoai").ToString
db.ExecuteNonQuery(str) 'update data table bc_dt LayDanhSachTheLoai() End Sub