Bài giảng Microsoft Visual Basic - Bài 3: Sử dụng DataCombo, DataList và DataGrid
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Microsoft Visual Basic - Bài 3: Sử dụng DataCombo, DataList và DataGrid", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- bai_giang_microsoft_visual_basic_bai_3_su_dung_datacombo_dat.pdf
Nội dung text: Bài giảng Microsoft Visual Basic - Bài 3: Sử dụng DataCombo, DataList và DataGrid
- MICROSOFT VISUAL BASIC Bài 3 : Sử dụng DataCombo, DataList và DataGrid I, Sử dụng DataGrid hiển thị dữ liệu 1, Thiết lập DataGrid trên Form 2, Kết nối DataGrid với nguồn dữ liệu 3, Truy xuất nội dung trên DataGrid II, Sử dụng DataCombo và DataList 1, Giới thiệu 2, Chương trình ứng dụng
- Menu Tiếp 1, Thiết lập DataGrid trên Form a, Đưa DataGrid vào ứng dụng : DataGrid là một điều khiển ActiveX, nên muốn sử dụng chúng ta phải đưa vào ứng dụng thông qua chức năng Project – Components – Microsoft DataGrid Control 6.0 Điều khiển này chứa trong tập tin MSDATGRD.OCX
- Menu Về 1, Thiết lập DataGrid trên Form b, Thiết kế lại DataGrid DataGrid khi đưa vào form mặc định chỉ có hai cột, muốn tăng giảm cột ta có thể làm như sau : + nhấn chuột phải trên DataGrid và chọn Edit trên shortcut menu + Sau đó, nhấn chuột phải lần thứ hai trên DataGrid Delete : để xoá cột đang được chọn trên DataGrid Insert : để chèn thêm một cột vào trước cột đang được chọn trên DataGrid Append : thêm một cột vào vị trí sau cùng trên DataGrid Có thể định độ rộng của cột bằng chuột khi thấy xuất hiện con trỏ sau
- Menu 2, Kết nối DataGrid với nguồn dữ 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 của bảng sinhvien Dim rsSinhVien As New ADODB.Recordset Sub LayNguonSinhVien() If rsSinhVien.State = 1 Then rsSinhVien.Close sql = "SINHVIEN" rsSinhVien.Open sql, cnn, 3, 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 trên DataGrid a, Cách 1: Trước khi lấy nội dung của một ô bất kỳ trên DataGrid, ta dùng thuộc tính Col và Row để chuyển ô hiện hành trên DataGrid đến ô muốn lấy nội dung và 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ủa ô ở cột thứ 3, dòng thứ 4 DataGrid1.Col = 2 DataGrid1.Row = 3 MsgBox DataGrid1.Text
- Menu Về 3, Truy xuất nội dung trên DataGrid b, Cách 2: Sử dụng thuộc tính Text của đối tượng Columns( ) trên DataGrid để lấy nội dung trên dòng hiện hành : -Ví dụ : Muốn lấy trị cột thứ 3 của dòng hiện hành : MsgBox DataGrid1.Columns(2).Text
- Menu 1, Giới thiệu DataList và DataCombo là hai control đặc biệt có khả năng kết nối với nguồn dữ liệu. Hai control này có thể sử dụng 2 nguồn dữ liệu, một để hiển thị, một để cập nhật dữ liệu. a, Các thuộc tính dùng khi muốn cập nhật dữ liệu : DataSource : chứa recordset nguồn DataField : chứa Field ( trường dữ liệu) b, Các thuộc tính hiển thị dữ liệu RowSource : chứa nội dung các 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ụ về cách lấy nguồn cho DataCombo (Trên 1 RecordSet) Dim rsKhoa As New ADODB.Recordset Sub Nguon_Khoa() If rsKhoa.State = 1 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ụ về kết hợp sử dụng TextBox và DataCombo Phân tích : + Nguồn dữ liệu sử dụng để cập nhật là Bảng Sinh Viên + Nhưng ở Datacombo Khoa lại phải hiển thị tên khoa. Mà trong bảng Sinh viên chỉ có Mã Khoa. Như vậy, ta phải sử dụng 2 recordset trên DataCombo để lấy được dữ liệu ở Sinh Viên và Khoa. + Khi di chuyển thì phải chỉ rõ vị trí bản ghi hiện hành trên tổng số bản ghi.
- Menu Về Tiếp 2, Chương trình ứng dụng Các bước giải bài tập trên : 1, Viết chương trình kết nối CSDL (trong Module) 2, Khai báo các 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 chính cho chương trình (bảng SinhVien) 5, Viết thủ tục Form_Load() để thiết lập kết nối dữ liệu 6, Viết lệnh cho các nút lệnh di chuyển 7, Viết lệnh hiển thị vị trí hiện hành / tổng bản ghi
- Ví dụ b 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 = 1 Then cnn.Close cnn.CursorLocation = adUseClient cnn.Open strProvider End Sub
- Ví dụ b 2, Khai báo các Recorset sử dụng cho chương trình Dim rsSinhVien As New ADODB.Recordset Dim rsKhoa As New ADODB.Recordset
- Ví dụ b 3, Viết thủ tục lấy nguồn hiển thị cho DataCombo (bảng Khoa) Sub LayNguonKhoa() If rsKhoa.State = 1 Then rsKhoa.Close sql = "KHOA" rsKhoa.Open sql, cnn, 3, 3 Set dcboKhoa.RowSource = rsKhoa dcboKhoa.ListField = "TenKhoa" dcboKhoa.BoundColumn = "MaKhoa" End Sub
- Ví dụ b 4, Viết thủ tục lấy nguồn chính cho chương trình (bảng SinhVien) Sub LayNguonSinhVien() If rsSinhVien.State = 1 Then rsSinhVien.Close sql = "SINHVIEN" rsSinhVien.Open sql, cnn, 3, 3 Set txtMasv.DataSource = rsSinhVien txtMasv.DataField = "MaSV" Set txtHoten.DataSource = rsSinhVien txtHoten.DataField = "HoTenSV" Set txtNgaysinh.DataSource = rsSinhVien txtNgaysinh.DataField = "Ngaysinh" Set txtDiachi.DataSource = rsSinhVien txtDiachi.DataField = "Diachi" Set dcboKhoa.DataSource = rsSinhVien dcboKhoa.DataField = "MaKhoa" End Sub
- Ví dụ b 5, Viết thủ tục Form_Load() để thiết lập kết nối dữ liệu Private Sub Form_Load() Call Mo_CSDL Call LayNguonKhoa Call LayNguonSinhVien End Sub
- Ví dụ b 6, Viết lệnh cho các nút lệnh di chuyển Private Sub cmdDau_Click() rsSinhVien.MoveFirst End Sub Private Sub cmdTruoc_Click() If rsSinhVien.AbsolutePosition > 1 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í hiện hành / tổng bản 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ụ về cách kết hợp sử dụng DataCombo và DataGrid Phân tích : Khi chọn khoa ở Datacombo thì ở dưới DataGrid sẽ liệt kê các sinh viên của khoa đó. 1, Kết nối cơ sở dữ 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 = 1 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 = 1 Then rsKHOA.Close sql = "KHOA“ rsKHOA.Open sql, cnn, 3, 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 dữ 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 = 1 Then rsSINHVIEN.Close sql = "SELECT * FROM SinhVien Where Makhoa ='" & strMaKhoa & "'" rsSINHVIEN.Open sql, cnn, 3, 3 Set dgSinhVien.DataSource = rsSINHVIEN End Sub
- Ví dụ c 5, Viết thủ tục dcboKhoa_Click để nối DCBO và DG Private Sub dcboKhoa_Click(Area As Integer) If Area = 2 Then Call LayNguonSinhVien End If End Sub
- Menu Về 2, Chương trình ứng dụng d, Ví dụ về cách kết hợp sử dụng TextBox và DataGrid Các bước giải bà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 các 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 = 1 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 các ô TextBox Sub LayNguonKhoa() If rsKHOA.State = 1 Then rsKHOA.Close sql = "KHOA" rsKHOA.Open sql, cnn, 3, 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 dữ 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 = 1 Then rsSINHVIEN.Close sql = "SELECT * FROM SinhVien Where Makhoa ='" & strMaKhoa & "'" rsSINHVIEN.Open sql, cnn, 3, 3 Set dgSinhVien.DataSource = rsSINHVIEN End Sub
- Ví dụ d 5, Viết thủ tục txtMaKhoa_Change() để nối TextBox và DataGrid Private Sub txtMakhoa_Change() On Error Resume Next Call LayNguonSinhVien End Sub
- Ví dụ d 6, Viết lệnh cho các nút lệnh di chuyển Private Sub cmdDau_Click() rsKHOA.MoveFirst End Sub Private Sub cmdTruoc_Click() If rsKHOA.AbsolutePosition > 1 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