Chương 4 Xây dựng các màn hình danh mục
4.2 Màn hình Bộ phận
Chúng ta để ý rằng các màn hình danh mục này rất giống nhau về hình thức cũng như các sự
Chương 4 - Xây dựng các màn hình danh mục
56 STT Tên Control Loại Tên hàm xử lý
1 BPList ListView
2 txtTenBoPhan 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 bằng cấp được cài đặt thành 2 lớp: Một lớp là BoPhan_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 -BoPhan.
4.2.1 Lớp BoPhan_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 bộ phận đã có trong cơ sở dữ liệu lên trên listview. Do đó, trong hàm BoPhan_Form_Load ta sẽ gọi hàm
HienThiDanhSachBoPhan như sau:
Private Sub BoPhan_Form_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
HienThiDanhSachBoPhan() End Sub
Với hàm HienthiDanhSachBoPhan được cài đặt như sau:
Private Sub HienThiDanhSachBoPhan() BPList.Items.Clear()
Dim i As Integer Dim str As String Dim dt As DataTable
dt = bp.LayDanhSachBoPhan 'Hiển thị danh sách bophan For i = 0 To dt.Rows.Count - 1 Dim lvi As ListViewItem
lvi = BPList.Items.Add((i + 1).ToString) str = dt.Rows(i)("TenBoPhan")
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 bộ phận được trả ra từ phương thức
LayDanhSachBoPhan rồi đưa lên trên listview. Còn phương thức LayDanhSachBoPhan là một phương thức thuộc lớp BoPhan, 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 txtTenBoPhan.Text <> "" Then bp.ThemBoPhan(txtTenBoPhan.Text) HienThiDanhSachBoPhan()
MessageBox.Show("Thêm thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information) txtTenBoPhan.Text = ""
Else
MessageBox.Show("Bạn chưa nhập tên bộ phận", "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 BPList.SelectedIndices.Count > 0 Then Dim str As String
str =
BPList.Items(BPList.SelectedIndices.Item(0)).SubItems(1).Text() If MessageBox.Show("Bạn có chắc chắn là muốn xóa bộ phận '" + str + "' không ?", "Hỏi lại", MessageBoxButtons.YesNo,
MessageBoxIcon.Question) = DialogResult.Yes Then bp.XoaBoPhan(BPList.SelectedIndices.Item(0)) BPList.Items.Remove(BPList.SelectedItems(0))
Chương 4 - Xây dựng các màn hình danh mục
58
MessageBox.Show("Bạn phải chọn 1 bộ phận 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 BPList.SelectedIndices.Count > 0 Then If txtTenBoPhan.Text <> "" Then
bp.CapNhatBoPhan(BPList.SelectedIndices.Item(0), txtTenBoPhan.Text)
HienThiDanhSachBoPhan()
MessageBox.Show("Bộ phận '" + txtTenBoPhan.Text + "' đã được cập nhật thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information)
txtTenBoPhan.Text = ""
End If Else
MessageBox.Show("Bạn phải chọn 1 bộ phận 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
txtTenBoPhan.Text = ""
End Sub
Và sau đó chúng ta phát sính sự kiện SelectedTextChanged của control BPList tương tự như màn hình bằng cấp ở trên, và cài đặt như sau:
Private Sub BPList_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles BPList.SelectedIndexChanged
If BPList.SelectedIndices.Count > 0 Then txtTenBoPhan.Text =
BPList.Items(BPList.SelectedIndices.Item(0)).SubItems(1).Text End If
End Sub
4.2.2 Lớp BoPhan
Lớp BoPhan Thuộc tính
Tên Lớp Ý nghĩa
Db Database Đảm nhiệm việc giao tiếp với
CSDL
bp_dt DataTable Chứa danh sách các bộ phận
Phương thức
Tên Ý nghĩa
New Hàm tạo (Constructor)
LayDanhSachBoPhan Lấy danh sách các bộ phận từ cơ sỏ dữ liệu ThemBoPhan Thêm 1 loại bộ phận vào CSDL
XoaBoPhan Xóa một loại bộ phận khỏi CSDL CapNhatBoPhan Cập nhật lại thông tin của 1 loại bộ phận 4.2.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.2.2.2 LayDanhSachBoPhan Kết quả trả về:
Kiểu / Lớp Ý nghĩa
DataTable Danh sách các loại bộ phận có trong CSDL Mã nguồn:
Public Function LayDanhSachBoPhan() As DataTable
bp_dt = db.Execute("Select * from BOPHAN order by MaBoPhan") Return bp_dt
End Function
4.2.2.3 ThemBoPhan Tham số:
Tên Kiểu / Lớp Ý nghĩa
ten String Tên loại bộ phận cần thêm vào (mã loại bộ phận tương ứng sẽ được chương trình tự phát sinh)
Mã nguồn:
Public Sub ThemBoPhan(ByVal ten As String) Dim dt As DataTable
dt = db.Execute("select MaBoPhan from BOPHAN where MaBoPhan >= all (select MaBoPhan from BOPHAN)")
'Chung ta biet chac rang dt chi co 1 dong Dim MaBP As Integer
MaBP = dt.Rows(0)(0) + 1 Dim str As String
str = "Insert into BOPHAN values(" + MaBP.ToString + ",N'" + ten +
"')"
db.ExecuteNonQuery(str)
Chương 4 - Xây dựng các màn hình danh mục
60 4.2.2.4 XoaBoPhan
Tham số:
Tên Kiểu / Lớp Ý nghĩa
index Integer Số thứ tự của bộ phận cần xóa. Lưu ý rằng thứ tự các bộ phận đượ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 XoaBoPhan(ByVal index As Integer) Dim str As String
str = "delete from BOPHAN where MaBoPhan = " + bp_dt.Rows(index)("MaBoPhan").ToString
db.ExecuteNonQuery(str) 'update data table bp_dt bp_dt.Rows.RemoveAt(index) End Sub
4.2.2.5 CapNhatBoPhan Tham số:
Tên Kiểu / Lớp Ý nghĩa
Index Integer Số thứ tự của bộ phận cần xóa. Lưu ý rằng thứ tự các bộ phận đượ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 bộ phận cần cập nhật.
Mã nguồn:
Public Sub CapNhatBoPhan(ByVal index As Integer, ByVal ten As String) Dim str As String
str = "Update BOPHAN set TenBoPhan = N'" + ten + "' where MaBoPhan =
" + bp_dt.Rows(index)("MaBoPhan").ToString db.ExecuteNonQuery(str)
'update data table bp_dt Dim dr As DataRow
dr = bp_dt.Rows(index) dr(1) = ten
End Sub