Bài giảng 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

pdf 30 trang phuongnguyen 8980
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 hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Microsoft Visual Basic - Bài 3: Sử dụng DataCombo, DataList và DataGrid

Bài giảng Microsoft Visual Basic - Bài 3: Sử dụng DataCombo, DataList và DataGrid
MICROSOFT VISUAL BASIC 
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 
Bài 3 : Sử dụng DataCombo, DataList và DataGrid 
Menu Tiếp 
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 
1, Thiết lập DataGrid trên Form 
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 
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 
2, Chương trình ứng dụng 
a, Ví dụ về cách lấy nguồn cho DataCombo (Trên 1 RecordSet) 
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 
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 
1, Viết chương trình kết nối CSDL (trong Module) 
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 
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 
1, Viết chương trình kết nối CSDL (trong Module) 
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 
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 
1, Viết chương trình kết nối CSDL (trong Module) 
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 
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 
6, Viết lệnh cho các nút lệnh di chuyển 

File đính kèm:

  • pdfbai_giang_microsoft_visual_basic_bai_3_su_dung_datacombo_dat.pdf