Lập trình cơ sở dữ liệu nâng cao 3 tài liệu, giáo án, bài giảng , luận văn, luận án, đồ án, bài tập lớn về tất cả các lĩ...
MICROSOFT VISUAL BASIC Bài : Sử dụng DataCombo, DataList DataGrid I, Sử dụng DataGrid hiển thị liệu 1, Thiết lập DataGrid Form 2, Kết nối DataGrid với nguồn liệu 3, Truy xuất nội dung DataGrid II, Sử dụng DataCombo DataList 1, Giới thiệu 2, Chương trình ứng dụng Menu 1, Thiết lập DataGrid Form a, Đưa DataGrid vào ứng dụng : DataGrid điều khiển ActiveX, nên muốn sử dụng phải đưa vào ứng dụng thông qua chức Project – Components – Microsoft DataGrid Control 6.0 Điều khiển chứa tập tin MSDATGRD.OCX Tiếp Menu Về 1, Thiết lập DataGrid Form b, Thiết kế lại DataGrid DataGrid đưa vào form mặc định có hai cột, muốn tăng giảm cột ta làm sau : + nhấn chuột phải DataGrid chọn Edit shortcut menu + Sau đó, nhấn chuột phải lần thứ hai DataGrid Delete : để xoá cột chọn DataGrid Insert : để chèn thêm cột vào trước cột chọn DataGrid Append : thêm cột vào vị trí sau DataGrid Có thể định độ rộng cột chuột thấy xuất trỏ sau Menu 2, Kết nối DataGrid với nguồn liệu Ta liên kết DataGrid với Recordset qua thuộc tính Datsource : Set .DataSource = Ví dụ : Dùng DataGrid hiển thị nội dung bảng sinhvien Dim rsSinhVien As New ADODB.Recordset Sub LayNguonSinhVien() If rsSinhVien.State = Then rsSinhVien.Close sql = "SINHVIEN" rsSinhVien.Open sql, cnn, 3, Set DataGrid1.DataSource = rsSinhVien End Sub Private Sub Form_Load() Call Mo_CSDL Call LayNguonSinhVien End Sub Menu Tiếp 3, Truy xuất nội dung DataGrid a, Cách 1: Trước lấy nội dung ô DataGrid, ta dùng thuộc tính Col Row để chuyển hành DataGrid đến ô muốn lấy nội dung dùng thuộc tính Text để lấy nội dung (lưu ý cột, dòng đánh số từ 0) Ví dụ : Muốn lấy trị cột thứ 3, dòng thứ DataGrid1.Col = DataGrid1.Row = MsgBox DataGrid1.Text Menu Về 3, Truy xuất nội dung DataGrid b, Cách 2: Sử dụng thuộc tính Text đối tượng Columns() DataGrid để lấy nội dung dòng hành : -Ví dụ : Muốn lấy trị cột thứ dòng hành : MsgBox DataGrid1.Columns(2).Text Menu 1, Giới thiệu DataList DataCombo hai control đặc biệt có khả kết nối với nguồn liệu Hai control sử dụng nguồn liệu, để hiển thị, để cập nhật liệu a, Các thuộc tính dùng muốn cập nhật liệu : DataSource : chứa recordset nguồn DataField : chứa Field ( trường liệu) b, Các thuộc tính hiển thị liệu RowSource : chứa nội dung mẩu tin ListField : chọn trường hiển thị nội dung BoundColumn : cột nội dung lưu trữ ( không hiển thị) BoundText : nội dung lưu trữ ( không hiển thị) Menu Tiếp 2, Chương trình ứng dụng a, Ví dụ cách lấy nguồn cho DataCombo (Trên RecordSet) Dim rsKhoa As New ADODB.Recordset Sub Nguon_Khoa() If rsKhoa.State = Then rsKhoa.Close sql = "KHOA" Set DataCombo1.DataSource = rsKhoa DataCombo1.DataField = "MaKhoa" Set DataCombo1.RowSource = rsKhoa DataCombo1.ListField = "TenKhoa" DataCombo1.BoundColumn = "MaKhoa" End Sub Private Sub Form_Load() Call Mo_CSDL Call Nguon_Khoa End Sub Menu Về Tiếp 2, Chương trình ứng dụng b, Ví dụ kết hợp sử dụng TextBox DataCombo Phân tích : + Nguồn liệu sử dụng để cập nhật Bảng Sinh Viên + Nhưng Datacombo Khoa lại phải hiển thị tên khoa Mà bảng Sinh viên có Mã Khoa Như vậy, ta phải sử dụng recordset DataCombo để lấy liệu Sinh Viên Khoa + Khi di chuyển phải rõ vị trí ghi hành tổng số ghi Menu Về 2, Chương trình ứng dụng Các bước giải tập : 1, Viết chương trình kết nối CSDL (trong Module) 2, Khai báo Recorset sử dụng cho chương trình 3, Viết thủ tục lấy nguồn hiển thị cho DataCombo (bảng Khoa) 4, Viết thủ tục lấy nguồn cho chương trình (bảng SinhVien) 5, Viết thủ tục Form_Load() để thiết lập kết nối liệu 6, Viết lệnh cho nút lệnh di chuyển 7, Viết lệnh hiển thị vị trí hành / tổng ghi Tiếp Ví dụ b 6, Viết lệnh cho nút lệnh di chuyển Private Sub cmdDau_Click() rsSinhVien.MoveFirst End Sub Private Sub cmdTruoc_Click() If rsSinhVien.AbsolutePosition > Then rsSinhVien.MovePrevious End If End Sub Private Sub cmdSau_Click() If rsSinhVien.AbsolutePosition < rsSinhVien.RecordCount Then rsSinhVien.MoveNext End If End Sub Private Sub cmdCuoi_Click() rsSinhVien.MoveLast End Sub Ví dụ b 7, Viết lệnh hiển thị vị trí hành / tổng ghi Private Sub txtMasv_Change() On Error Resume Next lblVT = rsSinhVien.AbsolutePosition & "/" & rsSinhVien.RecordCount End Sub Menu Về Tiếp 2, Chương trình ứng dụng c, Ví dụ cách kết hợp sử dụng DataCombo DataGrid Phân tích : Khi chọn khoa Datacombo DataGrid liệt kê sinh viên khoa 1, Kết nối sở liệu 2, Lấy nguồn khoa 3, Viết Form_Load() 4, Lấy nguồn SinhVien 5, Thủ tục dcboKHOA_Click() Ví dụ c 1, Viết chương trình kết nối CSDL (trong Module) Public cnn As New ADODB.Connection Public duong_dan As String, strProvider As String Sub Mo_CSDL() duong_dan = App.Path & "\CSDL.MDB" strProvider = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source =" & duong_dan If cnn.State = Then cnn.Close cnn.CursorLocation = adUseClient cnn.Open strProvider End Sub Ví dụ c 2, Lấy nguồn khoa cho DataCombo Sub LayNguonKhoa() If rsKHOA.State = Then rsKHOA.Close sql = "KHOA“ rsKHOA.Open sql, cnn, 3, Set dcboKhoa.RowSource = rsKHOA dcboKhoa.ListField = "TenKhoa“ dcboKhoa.BoundColumn = "MaKhoa“ End Sub Ví dụ c 3, Viết thủ tục Form_Load để kết nối liệu Private Sub Form_Load() Call Mo_CSDL Call LayNguonKhoa End Sub Ví dụ c 4, Viết thủ tục lấy nguồn SinhVien cho DataGrid Sub LayNguonSinhVien() Dim strMaKhoa As String strMaKhoa = dcboKhoa.BoundText If rsSINHVIEN.State = Then rsSINHVIEN.Close sql = "SELECT * FROM SinhVien Where Makhoa ='" & strMaKhoa & "'" rsSINHVIEN.Open sql, cnn, 3, Set dgSinhVien.DataSource = rsSINHVIEN End Sub Ví dụ c 5, Viết thủ tục dcboKhoa_Click để nối DCBO DG Private Sub dcboKhoa_Click(Area As Integer) If Area = Then Call LayNguonSinhVien End If End Sub Menu Về 2, Chương trình ứng dụng d, Ví dụ cách kết hợp sử dụng TextBox DataGrid Các bước giải toán : 1, Kết nối CSDL 2, Lấy nguồn khoa cho TextBox 3, Viết thủ tục Form_Load() 4, Viết lấy nguồn cho DataGrid 5, Viết thủ tục txtMakhoa_Change() 6, Viết nút di chuyển Ví dụ d 1, Viết chương trình kết nối CSDL (trong Module) Public cnn As New ADODB.Connection Public duong_dan As String, strProvider As String Sub Mo_CSDL() duong_dan = App.Path & "\CSDL.MDB" strProvider = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source =" & duong_dan If cnn.State = Then cnn.Close cnn.CursorLocation = adUseClient cnn.Open strProvider End Sub Ví dụ d 2, Viết thủ tục lấy nguồn Khoa cho ô TextBox Sub LayNguonKhoa() If rsKHOA.State = Then rsKHOA.Close sql = "KHOA" rsKHOA.Open sql, cnn, 3, Set txtMakhoa.DataSource = rsKHOA txtMakhoa.DataField = "MaKhoa" Set txtTenkhoa.DataSource = rsKHOA txtTenkhoa.DataField = "TenKhoa" End Sub Ví dụ d 3, Viết thủ tục Form_Load để kết nối liệu Private Sub Form_Load() Call Mo_CSDL Call LayNguonKhoa End Sub Ví dụ d 5, Viết thủ tục lấy nguồn Sinh Viên cho DataGrid Sub LayNguonSinhVien() Dim strMaKhoa As String strMaKhoa = txtMakhoa.Text If rsSINHVIEN.State = Then rsSINHVIEN.Close sql = "SELECT * FROM SinhVien Where Makhoa ='" & strMaKhoa & "'" rsSINHVIEN.Open sql, cnn, 3, Set dgSinhVien.DataSource = rsSINHVIEN End Sub Ví dụ d 5, Viết thủ tục txtMaKhoa_Change() để nối TextBox DataGrid Private Sub txtMakhoa_Change() On Error Resume Next Call LayNguonSinhVien End Sub Ví dụ d 6, Viết lệnh cho nút lệnh di chuyển Private Sub cmdDau_Click() rsKHOA.MoveFirst End Sub Private Sub cmdTruoc_Click() If rsKHOA.AbsolutePosition > Then rsKHOA.MovePrevious End If End Sub Private Sub cmdSau_Click() If rsKHOA.AbsolutePosition < rsKHOA.RecordCount Then rsKHOA.MoveNext End If End Sub Private Sub cmdCuoi_Click() rsKHOA.MoveLast End Sub ... với nguồn liệu Hai control sử dụng nguồn liệu, để hiển thị, để cập nhật liệu a, Các thuộc tính dùng muốn cập nhật liệu : DataSource : chứa recordset nguồn DataField : chứa Field ( trường liệu) b,... cho chương trình 3, Viết thủ tục lấy nguồn hiển thị cho DataCombo (bảng Khoa) 4, Viết thủ tục lấy nguồn cho chương trình (bảng SinhVien) 5, Viết thủ tục Form_Load() để thiết lập kết nối liệu 6,... Tiếp 2, Chương trình ứng dụng c, Ví dụ cách kết hợp sử dụng DataCombo DataGrid Phân tích : Khi chọn khoa Datacombo DataGrid liệt kê sinh viên khoa 1, Kết nối sở liệu 2, Lấy nguồn khoa 3, Viết Form_Load()