Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 89 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
89
Dung lượng
2,1 MB
Nội dung
UDPM-CĐ-MĐ18-LTWIN1 TUYÊN BỐ BẢN QUYỀN Tài liệu thuộc loại sách giáo trình nên nguồn thơng tin phép dùng nguyên trích dùng cho mục đích đào tạo tham khảo Mọi mục đích khác mang tính lệch lạc sử dụng với mục đích kinh doanh thiếu lành mạnh bị nghiêm cấm LỜI GIỚI THIỆU Đây tài liệu biên soạn theo chương trình đào tạo Cao đẳng nghề Công nghệ thông tin (ứng dụng phần mềm) Để học tốt mơn học này, người học nên có kiến thức lập trình Lập trình Windows mơ đun nhằm giúp người học có kiến thức kỹ lập trình sở mơi trường Windows Với phạm vi tài liệu này, cung cấp cho người học kiến thức kỹ sau: Cài đặt sử dụng với môi trường VB.NET Visual Studio.Net 2010 trở lên; Khai báo lớp đối tượng, thành phần lớp đối tượng sử dụng lớp đối tượng ngôn ngữ VB.Net; Cài đặt xây dựng chương trình theo phương pháp hướng đối tượng ngơn ngữ lập trình VB.NET; Xây dựng ứng dụng Windows Forms đơn giản kết nối đến sở liệu; Nghiêm túc, tỉ mỉ q trình tiếp cận với cơng cụ mới; Chủ động sáng tạo tìm kiếm ứng dụng viết VB.Net Trong q trình biên soạn, chúng tơi có tham khảo nhiều nguồn tài liệu khác từ nguồn Internet Mặc dù cố gắng biên soạn lại chắn khơng tránh khỏi thiếu sót, tác giả mong nhận ý kiến đóng góp để tài liệu ngày hoàn thiện để cung cấp cho người học kiến thức kỹ trọng tâm Cần Thơ, ngày 17 tháng 06 năm 2018 Tham gia biên soạn Chủ biên Nguyễn Phát Minh MỤC LỤC TRANG LỜI GIỚI THIỆU MỤC LỤC GIÁO TRÌNH MƠN HỌC/MÔ ĐUN BÀI 1: TỔNG QUAN VISUAL STUDIO NET, NET FRAMEWORK Mã bài: MĐ 18 - 01 Cài đặt sử dụng Visual Studio Net 1.1 Cài đặt VisualStudio Net Tổng quan Net Framwork 20 Cấu trúc Net Framework 22 Tạo ứng dụng 24 BÀI 2: NỀN TẢNG CỦA NGÔN NGỮ VB NET 27 Mã bài: MĐ 18 - 02 27 Các kiểu liệu đặc điểm 27 Biến 28 Mảng – Structure 29 3.1 Khái niệm 29 3.2 Khai báo 29 3.2.1 Mảng có chiều dài cố định: 29 3.2.2 Mảng động 30 3.2 Một số thao tác mảng 30 Các toán tử 31 4.1 Khái niệm 31 4.2 Các loại phép toán 31 Cấu trúc điều khiển 31 5.2 Câu lệnh lựa chọn Select Case 33 5.3 Toán tử Is & To 33 5.4.1 Lặp trước số lần lặp 34 5.4.1.1 Câu lệnh Do Loop 34 5.4.1.2 Câu lệnh While End While 35 5.4.2 Lặp biết trước số lần lặp với câu lệnh For…Next 35 Xử lý lỗi 35 6.1 Cú pháp Try…Catch 36 6.2 Sử dụng mệnh đề Finally 37 6.3 Cài đặt Try…Catch phức tạp 38 6.4 Tự phát sinh lỗi 39 6.5 Sử dụng khối Try…Catch lồng 40 6.6 So sánh chế xử lý lỗi với kỹ thuật phòng vệ lỗi 41 6.7 Sử dụng phát biểu thoát Exit Try 41 Kiểm tra 41 BÀI 3: LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG TRONG VISUAL BASIC NET 42 Mã bài: MĐ 18 - 03 42 Khái niệm hướng đối tượng 42 Lập trình hướng đối tượng VB.NET 43 Xây dựng lớp xử lý 58 3.1.1 Presentation Layer 58 3.1.2 Business Logic Layer 59 3.1.3 Data Access Layer 59 Kiểm tra chương I, II 67 BÀI 4: THIẾT KẾ CÁC DẠNG MÀN HÌNH 68 Mã bài: MĐ 18 - 04 68 Các điều khiển hiển thị liệu 68 Datagrid 72 2.1 DataGridTableStyle TableStyles 72 2.2 DataGridColumnStyle GridColumnStyles 72 Hiển thị liệu điều khiển 75 Màn hình đơn 78 Màn hình nhiều 83 Màn hình lọc liệu 87 Màn hình một-nhiều-nhiều 88 Kiểm tra 88 TÀI LIỆU THAM KHẢO 89 GIÁO TRÌNH MƠN HỌC/MƠ ĐUN Tên mơn học/mơ đun: LẬP TRÌNH WINDOWS (VB.NET) Mã mơn học/mơ đun: MĐ 18 Vị trí, tính chất, ý nghĩa vai trị mơn học/mơ đun: _ _ _ Vị trí: mơ đun bố trí giảng dạy sau mơn sở nghề Tính chất: mơ đun bắt buộc thuộc chun mơn nghề chương trình đào tạo Cao đẳng (ứng dụng phần mềm) Ý nghĩa vai trị mơn học/mơ đun: Mục tiêu môn học/mô đun: _ Kiến thức: o Biết đặc tính lập trình hướng đối tượng; o Biết phương pháp lập trình dựa lớp đối tượng, phương thức hoạt động đối tượng, lớp đối tượng ngôn ngữ VB.Net; _ Kỹ năng: o Cài đặt sử dụng với môi trường VB.net Visual Studio.Net 2005; o Cài đặt xây dựng chương trình theo phương pháp hướng đối tượng ngơn ngữ lập trình VB.NET; o Xây dựng ứng dụng Windows Forms; _ Về lực tự chủ trách nhiệm: o Nghiêm túc, tỉ mỉ q trình tiếp cận với cơng cụ mới; o Chủ động sáng tạo tìm kiếm ứng dụng viết VB.Net Nội dung môn học/mô đun: Số TT I Thời gian Tên mô đun Tổng số Lý thuyết Thực hành, Kiểm tra* Bài tập (LT TH) Bài 1: Tổng quan Visual Studio Net, Net Framework Cài đặt sử dụng Visual Studio NET Tổng quan Net Framework 1 0 Cấu trúc Net Framework 1 II III IV Tạo ứng dụng Bài 2: Nền tảng ngôn ngữ VB Net 22 14 Các kiểu liệu Biến Mảng Toán tử Cấu trúc điều khiển Xử lý lỗi Kiểm tra 0 Bài 3: Lập trình hướng đối tượng Visual Basic Net 37 12 24 Khái niệm hướng đối tượng Lập trình hướng đối tượng VB Net 24 16 Xây dựng lớp xử lý Kiểm tra 0 Bài 4: Thiết kế hình 22 13 Các điều khiển hiển thị liệu DataGrid 1 Hiển thị liệu điều khiển Màn hình đơn Màn hình nhiều Màn hình lọc theo điều kiện Màn hình nhiều nhiều Kiểm tra 0 Tổng cộng 90 30 56 BÀI 1: TỔNG QUAN VISUAL STUDIO NET, NET FRAMEWORK Mã bài: MĐ 18 - 01 Giới thiệu: Trong sinh viên học kiến thức Net Framework tìm hiểu cách cài đặt hồn chỉnh chương trình Visual Studio Mục tiêu: Hiểu môi trường Microsoft Net, thành phần quan trọng Net Platform; Biết cấu trúc Net Framework; Hiểu tính Visual Studio.Net 2015; Cài đặt Visual Studio Net 2015, làm quen với giao diện VB.Net; Viết ứng dụng nhỏ VB.net; Nghiêm túc, tỉ mỉ q trình tiếp cận với cơng cụ Nội dung chính: Cài đặt sử dụng Visual Studio Net 1.1 Cài đặt VisualStudio Net Giới thiệu Visual Studio 2015 Visual 2015 có cài đặt cho người dùng lựa chọn sau : Visual Studio Community 2015 Bản miễn phí với tính A rich, integrated development environment for creating stunning applications for Windows, Android, and iOS, as well as modern web applications and cloud services Visual Studio Enterprise 2015 : Bản phép dùng thử (90 ngày) hết thời hạn dùng thử tất nhiên bạn phải trả tiền để tiếp tục sử dụng Bản có tính giới thiệu sau : Enterprise-grade solution with advanced capabilities for teams working on projects of any size or complexity, including advanced testing and DevOps Visual Studio Code tiếp tục miễn phí Microsoft Code editing redefined Build and debug modern web and cloud applications Code is free and available on your favorite platform — Windows, Mac OS X, or Linux Với cài đặt tảng Mac, Linux Lời khuyên Với người sử dụng nói chung phần lớn học sinh/sinh viên nên khuyên dùng việc cài đặt sử dụng Visual Studio Community 2015 phù hợp Vì miễn phí đầy đủ tính phục vụ cho việc học tập Chuẩn Bị Bộ cài đặt Visual Studio Có thể tải trang chủ Microsoft Một máy tính để cài đặt có kết nối mạng Lưu ý Với cài đặt Visual Studio 2015 Trước cài đặt bạn nên update Microsoft NET Framework tới để việc cài đặt không gặp lỗi Bản Microsoft NET Framework 4.6.15.9k Tiến hành download cài đặt VS Bộ cài đặt dùng viết Visual Studio Community 2015 Hệ điều hành sử dụng Windows 10 Truy cập trang thức Microsoft 0.png1347x637 289 KB Tại giao diện trang chủ VS, click vào Downloads, chọn mục Top Downloads Tại đây, bạn click phần Visual Studio Community để tiến hành tải cài đặt Hoặc xem thêm thông tin chi tiết cách click vào phần All downloads Sau bạn chọn tải cài đặt Một trang load 10 Chọn loại DataGridColumnStyle Nhấn nút [Add] để tạo DataGridColumnStyle chọn khai báo thuộc tính cần thiết : Alignment, HeaderText, Width, Format, MappingName, ReadOnly, NullText…Tiếp tục cột khác Tạo DataGridColumnStyle khai báo Hiển thị liệu điều khiển Để hiển thị liệu lên hình, xuất liệu lớp xử lý điều khiển cần hiển thị cần cập nhật vào lớp xử lý lại thực gán trị điều khiển vào cột tương ứng Phần giới thiệu số đối tượng liên quan đến việc đồng liệu hình 75 3.1 Dòng hành Như đề cập phần ADO.Net, liệu DataTable DataView khơng có dịng hành Recordset thời điểm, làm việc với dịng liệu Ngược lại liệu hiển thị hình, khái niệm hành đưa nhằm đồng liệu điều khiển hiển thị thông tin nguồn liệu Dưới giới thiệu lớp đối tượng quản lý liệu hình 3.2 BindingManagerBase BindingManagerBase đối tượng quản lý cho phép đồng liệu điều khiển hình liên kết đến đối tượng nguồn Đây lớp trừu tượng BindingManagerBase thuộc không gian tên System.Windows.Forms.BindingManagerBase gồm hai lớp: System.Windows.Forms.CurrencyManager System.Windows.Forms.PropertyManager CurrencyManager thực việc đồng cách trì trỏ đến dịng hành danh sách Các điều khiển liên kết đến dòng hành hiển thị thơng tin dịng PropertyManager dùng để trì thuộc tính hành đối tượng, thuộc tính đối tượng hành danh sách Cách tạo thường dùng từ đối tượng BindingContext Form sau: Cú pháp: Khởi tạo DataGridColumnStyle Dim bm As BindingManagerBase = _ .BindingContext() Hoặc: Dim bm As BindingManagerBase = _ .BindingContext(, ) Nếu nguồn liệu đối tượng trả thuộc tính, BindingContext trả ProtertyManager Ví dụ liên kết Text Label với Text Textbox Nếu nguồn liệu đối tượng chứa danh sách, BindingContext trả CurrencyManager Ví dụ nguồn DataSet, DataTable, DataView CurrencyManager trả Các thuộc tính cần lưu ý BindingManagerBase Các thuộc tính cần ý BindingManagerBase Tên Mơ tả Count Số dịng danh sách BindingManagerBase quản lý Current Trả đối tượng hành (chỉ có tác dụng với CurrencyManager) 76 Position Vị trí đối tượng hành danh sách (đọc ghi, có tác dụng với CurrencyManager) Các phương thức cần ý BindingManagerBase Tên Mô tả AddNew() Thêm dòng danh sách BindingManagerBase quản lý (như AddNew DataView) Dòng thêm chuyển thành đối tượng hành (Current) BindingManagerBase EndCurrentEdit() Chấm dứt chỉnh sửa đối tượng hành dòng đưa vào tập hợp Rows DataTable (chỉ có tác dụng với CurrencyManager) CancelCurrentEdit() Bỏ qua thay đổi đối tượng hành Các kiện BindingManagerBase Tên CurrentChanged Mô tả Sự kiện xảy đối tượng hành thay đổi PositionChanged Sự kiện xảy vị trí hành BindingManagerBase thay đổi 3.3 BindingContext Phát sinh từ lớp đối tượng System.Windows.Forms.BindingContext, BindingContext đối tượng quản lý BindingManagerBase Các đối tượng kế thừa từ lớp Control có BindingContext Tuy nhiên, có Form điều khiển chứa điều khiển khác Groupbox, TabControl, Panel tạo BindingContext để quản lý BindingManagerBase hiển thị liệu điều khiển chứa Tuy liên kết với nguồn liệu (cách tham chiếu hoàn toàn giống nhau), hai BindingContext phát sinh hai BindingManagerBase khác không đồng liệu với 3.4 Các thủ tục nhập xuất liệu hình Để hiển thị liệu hình, sử dụng điều khiển đề cập thông qua thuộc tính liên kết liệu thường có thủ tục nhập xuất sau: Thủ tục Xuat_ho_so_: xuất trị dòng làm việc điều khiển hình Thủ tục Xuat_ho_so__moi: xuất trị mặc định điều khiển hình để chuẩn bị tiếp nhận thơng tin dịng Thủ tục Nhap_ho_so_: nhập trị điều khiển hình vào cột tương ứng dịng làm việc 77 Thủ tục Xuat_danh_sach_chon_: sử dụng cấp nguồn liệt kê cho điều khiển ComboBox, ListBox, ListCheckBox Thủ tục Xuat_luoi_: sử dụng xuất liệu bảng lưới (DataGrid) Màn hình đơn 4.1 Các khai báo Nguồn liệu cho đơn bảng, phần khai báo cho hình thường sau: Ví dụ: Private As Private Them_moi As Boolean = False Private WithEvents Danh_sach As BindingManagerBase biến tham chiếu đến đối tượng lớp xử lý nghiệp vụ hình Them_moi biến theo dõi trạng thái thêm dịng làm việc hình Danh_sach biến tham chiếu đến BindingManagerBase hiển thị hình 4.2 Các thủ tục nhập xuất Thực nhập xuất hình đơn, có ba thủ tục sau: Xuat_ho_so_: Private Sub Xuat_ho_so_ () If Danh_sach.Position >= Then Them_moi = False . = _ Danh_sach.Current() . = _ Danh_sach.Current() Else Xuat_ho_so__moi End If End Sub Xuat_ho_so__moi: Private Sub Xuat_ho_so__moi() 78 Them_moi = True . = _ . = _ End Sub Nhap_ho_so_: Private Sub Nhap_ho_so_() Danh_sach.Current() = . Danh_sach.Current() = . End Sub Nếu hình có sử dụng điều khiển liệt kê (ListControl) ComboBox, ListBox, CheckListBox, lúc cần phải có thêm nguồn liệu liệt kê cho điều khiển () có thêm thủ tục: Xuat_danh_sach_chon_: ‘ đối tượng cung cấp danh sách liệt kê cho điều khiển Private Sub Xuat_danh_sach_chon_() .DisplayMember = _ .ValueMember = _ .DataSource = End Sub Nếu hình hiển thị liệu dạng dịng cột sử dụng DataGrid, thủ tục xuất lưới là: Xuat_luoi_: Private Sub Xuat_luoi_() .DataSource = End Sub 4.3 Các hàm kiểm tra Trước thực nhập liệu vào DataTable, cần kiểm tra liệu nhập điều khiển có hợp lệ (khơng vi phạm ràng buộc toàn vẹn liệu, miền giá trị, v.v ) Các hàm hiểm tra trả trị Boolean: True hợp lệ, False không hợp lệ Nội dung hàm kiểm tra sau: 79 Kiem_tra_ As Boolean: (số lượng tùy theo số điều khiển cần kiểm tra) Private Function Kiem_tra_ As Boolean Dim Ketqua As Boolean = If Not Ketqua Then ' Thông báo lỗi .Focus ' Phần thay đổi tùy trường hợp [Else Ketqua = If Not Ketqua Then ' Thông báo lỗi .Focus End If] End If Return Ketqua End Function Kiem_tra_ghi_ As Boolean: phối hợp hàm kiểm tra để lấy kết tổng hợp Private Function Kiem_tra_ghi_ As Boolean Dim Ketqua As Boolean = Kiem_tra_ AndAlso _ Kiem_tra_ Return Ketqua End Function Kiem_tra_huy_ As Boolean: kiểm tra hủy liệu có vi phạm ràng buộc tồn vẹn không (kiểm tra bảng nhiều) Private Function Kiem_tra_huy_ As Boolean Dim Ketqua As Boolean Dim bang As _ New XL_() Ketqua = (bang.So_dong = 0) ' kiểm tra bảng khác cần Return Ketqua End Function 4.4 Các xử lý kiện Trên hình đơn, thường có xử lý kiện sau: 80 Form_Load: Khởi tạo bảng liệu thực xuất danh sách chọn (nếu có), xuất lưới, xuất hồ sơ Private Sub MH_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load = New Danh_sach = Me.BindingContext() Xuat_luoi_() Xuat_ho_so_() End Sub Sự kiện nhấn nút lệnh di chuyển: thay đổi dòng hành hợp lệ Private Sub Dau_Click(ByVal sender As Object, ByVal e As _ System.EventArgs) Handles Dau.Click If Danh_sach.Position > Then Danh_sach.Position = End If End Sub Private Sub Truoc_Click(ByVal sender As Object, ByVal e As _ System.EventArgs) Handles Truoc.Click If Danh_sach.Position > Then Danh_sach.Position -= End If End Sub Private Sub Sau_Click(ByVal sender As Object, ByVal e As _ System.EventArgs) Handles Sau.Click If Danh_sach.Position < Danh_sach.Count - Then Danh_sach.Position += End If End Sub Private Sub Cuoi_Click(ByVal sender As Object, ByVal e As _ System.EventArgs) Handles Cuoi.Click If Danh_sach.Position < Danh_sach.Count - Then Danh_sach.Position = Danh_sach.Count - End If End Sub 81 Sự kiện nhấn nút thêm: Thực xuất hồ sơ đưa trỏ nhập liệu điều khiển bắt đầu Private Sub Them_Click(ByVal sender As Object, ByVal e As _ System.EventArgs) Handles Them.Click Xuat_ho_so__moi() .Focus End Sub Sự kiện nhấn nút ghi: Thực kiểm tra ghi Nếu hợp lệ, thực bước: + Nếu Them_moi True (đang thêm), thêm dòng Danh_sach + Nhập hồ sơ + Thực ghi liệu lớp xử lý + Xuất hồ sơ Private Sub Ghi_Click(ByVal sender As Object, ByVal e As _ System.EventArgs) Handles Ghi.Click If Kiem_tra_ghi_() Then If Them_moi Then Danh_sach.AddNew() Nhap_ho_so_() Danh_sach.EndCurrentEdit() .Ghi() Xuat_ho_so_() End If End Sub Sự kiện nhấn nút không: Thực xuất lại thơng tin trước Private Sub Khong_Click(ByVal sender As Object, ByVal e As _ System.EventArgs) Handles Khong.Click Xuat_ho_so_() End Sub Sự kiện nhấn nút hủy: Nếu Them_moi True, thực xuất hồ sơ; ngược lại kiểm tra hủy hợp lệ đồng ý xóa thực hiện: + Đánh dấu hủy dịng hành Danh_sach + Thực ghi liệu lớp xử lý + Xuất hồ sơ Private Sub Huy_Click(ByVal sender As Object, ByVal e As _ System.EventArgs) Handles Huy.Click If Them_moi Then 82 Xuat_ho_so_() Exit Sub Else If Kiem_tra_huy_() Then If MsgBox("Đồng ý hủy ?", MsgBoxStyle.Question + _ MsgBoxStyle.YesNo,"Xin cho biết") = MsgBoxResult.Yes Then Danh_sach.Current.Delete() .Ghi() End If Else ' Thông báo lỗi End If End Sub Sự kiện CurrentChanged Danh_sach: Thực xuất hồ sơ, thêm Private Sub Danh_sach_CurrentChanged(ByVal sender As Object, ByVal e As _ System.EventArgs) Handles Danh_sach.CurrentChanged If Not Them_moi Then Xuat_ho_so_() End If End Sub Màn hình nhiều Màn hình hiển thị liệu bảng liệu bảng nhiều ứng với dòng hành bảng Dữ liệu cho hình gồm bảng bảng nhiều Có thể có dạng : 5.1 Màn hình một-nhiều hai trang Màn hình gồm điều khiển cho bảng một, lưới cho bảng lưới cho bảng nhiều Các điều khiển bảng tab TabControl tab lại chứa lưới bảng Lưới bảng nhiều đặt Form Bảng liệu phía nhiều phải khai báo có thể: Được đọc theo trị cột khóa bảng phía bảng phía thay đổi dòng làm việc xuất lưới Hoặc lọc theo trị cột khóa bảng phía bảng phía thay đổi dịng làm việc xuất lưới (nếu đọc toàn từ đầu) 83 Ví dụ: Xử lý bảng nhiều đọc theo khóa bảng (khi số liệu bảng nhiều lớn) Private As Private As Private Danh_sach As BindingManagerBase Private Danh_sach_nhieu As BindingManagerBase 84 Private Sub MH_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load Call Danh_sach_CurrentChanged(sender, e) End Sub Private Sub Xuat_luoi_() LUOI_.DataSource = End Sub Private Sub danh_sach_CurrentChanged(ByVal sender As Object, ByVal e As _ System.EventArgs) Handles danh_sach.CurrentChanged Dim khoa As Integer = If Not Them_moi AndAlso Danh_sach.Position >= Then khoa = Danh_sach.Current() End If As New _ ("điều kiện lọc theo khóa bảng một") Xuat_luoi_() End Sub Ví dụ: Xử lý bảng nhiều đọc hết lọc theo khóa bảng dòng hành bảng thay đổi (khi số liệu bảng nhiều không lớn) Private As Private Sub MH_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load As New () Xuat_luoi_() Call Danh_sach_CurrentChanged(sender, e) End Sub Private Sub Xuat_luoi_() LUOI_.DataSource = End Sub Private Sub danh_sach_CurrentChanged(ByVal sender As Object, ByVal e As _ 85 System.EventArgs) Handles danh_sach.CurrentChanged Dim khoa As Integer = If Not Them_moi AndAlso Danh_sach.Position >=0 Then khoa As Integer = Danh_sach.Current() End If .Loc_du_lieu("điều kiện lọc theo khóa bảng một") End Sub 5.2 Màn hình một-nhiều ba trang Màn hình có TabControl ba tab : tab chứa điều khiển bảng một, tab chứa lưới bảng tab chứa lưới bảng nhiều Cách thức xử lý 86 Màn hình lọc liệu 6.1 Màn hình lọc điều kiện Màn hình gồm điều khiển cho bảng lưới (hoặc ListBox) cho bảng nhiều Điều khiển bảng thường có Combobox, ListBox liệt kê giá trị giúp người dùng lựa chọn Chúng ta dùng kiện SelectedIndexChanged để lọc liệu Trên dạng khác hình lọc theo điều kiện: (các bảng kịch, diễn viên, tham gia đọc mở hình) Diễn viên phân vai hiển thị liệu THAM_GIA lọc theo kịch chọn Danh sách diễn viên hiển thị liệu DIEN_VIEN loại trừ diễn viên phân vai Ví dụ: bang_tham_gia bang_dien_vien khởi tạo mở hình Private Sub MVK_SelectedIndexChanged(ByVal sender As Object, ByVal e As _ System.EventArgs) Handles Danh_sach_chon_vo_kich.SelectedIndexChanged bang_tham_gia.Loc_du_lieu("MVK=" & MVK.SelectedValue) Dim chuoi As String = Lap_danh_sach_MDV(bang_tham_gia) If chuoi "" Then chuoi = "MDV Not In(" & chuoi & ")" bang_dien_vien.Loc_du_lieu(chuoi) End Sub Private Function Lap_danh_sach_MDV(bang As XL_BANG) As String Dim ketqua As String = "" For i As Integer = To bang.So_dong - bang.DefaultView(i)("MDV") & "," Next If ketqua.Length > Then ketqua = _ ketqua.SubString(0, ketqua.Length - 1) Return ketqua 87 ketqua &= End Function Các nút >, >> thực thêm dòng chọn Danh sách diễn viên vào bang_tham_gia lọc lại liệu bang_dien_vien Các nút