Bài giảng Microsoft Visual Basic - Bài 3: Sử dụng DataCombo, Datalist và DataGrid
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
30 trang |
Chia sẻ: huongthu9 | Lượt xem: 418 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Bài giảng Microsoft Visual Basic - Bài 3: Sử dụng DataCombo, Datalist và DataGrid, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
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
Các file đính kèm theo tài liệu này:
- bai_giang_microsoft_visual_basic_bai_3_su_dung_datacombo_dat.pdf