MICROSOFT VISUAL BASIC Bi 2 Cc i Tng
MICROSOFT VISUAL BASIC Bài 2 : Các Đối Tượng Trong ADODB I, Đối tượng Connection 1, Kết nối cơ sở dữ liệu 2, Thực hiện các câu lệnh SQL II, Đối tượng Record. Set 1, Tạo nguồn dữ liệu cho ứng dụng 2, Các thuộc tính của Record. Set 3, Các hành động của Record. Set III, Đối tượng Command
Menu Tiếp 1, Kết nối cơ sở dữ liệu Đoạn lệnh viết trong Module Public cnn As New ADODB. Connection Public duong_dan As String, str. Provider As String Sub Mo_CSDL() duong_dan = App. Path & "CSDL. MDB" str. Provider = "Provider=Microsoft. Jet. OLEDB. 4. 0; Data Source =" & duong_dan If cnn. State = 1 Then cnn. Close cnn. Cursor. Location = ad. Use. Client cnn. Open str. Provider End Sub Đoạn lệnh viết trong thư tục Form_Load của Form khởi động Private Sub Form_Load() Call Mo_CSDL End Sub
Menu Về 1, Kết nối cơ sở dữ liệu • ADODB cung cấp đối tượng Connection để kết nối với CSDL. Với Connection, người dùng có thể kết nối với nhiều loại CSDL khác nhau như Access, SQL Server, Oracle hay Excel, Mail… • Các thông tin về CSDL muốn kết nối tới cần phải cung cấp cho đối tượng Connection thông qua thuộc tính Connection. String bao gồm 2 thông tin chính là Provider và Nguồn dữ liệu, có thể cần cung cấp thêm là Username và Password với CSDL có bảo mật. • Thuộc tính Cursor. Location giúp chỉ định cách data provider cung cấp các chức năng thao tác với CSDL với hai giá trị ad. Use. Server và ad. Use. Client. • Sau khi đã gán giá trị cho Connection. String, sử dụng hành động Open để mở kết nối. • Thuộc tính State giúp kiểm tra trạng thái của kết nối. • ad. State. Open [1] : kết nối đang mở • ad. State. Closed [0] : kết nối đang đóng
Menu 2, Thực hiện các câu truy vấn SQL Sau khi đã kết nối với CSDL, người dùng có thể làm việc ngay với dữ liệu thông qua các câu truy vấn. Hành động Execcute của đối tượng Connection giúp thực hiện một câu lệnh SQL VD 1 : Thêm mới môn Ngoại Ngữ 1 vào bảng Monhoc sql = "INSERT INTO Mon. Hoc(Ma. MH, Ten. MH) VALUES('NN 01', 'Ngoai Ngu 1')" cnn. Execute sql VD 2 : Sửa tên môn Toán Thực Hành thành môn Toán 2 sql = "UPDATE Mon. Hoc SET Ten. MH='Toan 2' WHERE Ma. MH = 'T 02'" cnn. Execute sql VD 3 : Xoá môn học Ngoại Ngữ 1 vừa nhập khỏi CSDL sql = "DELETE FROM Mon. Hoc WHERE Ma. MH = 'NN 01'" cnn. Execute sql
Menu Tiếp 1, Tạo nguồn dữ liệu cho ứng dụng • Record. Set đáp ứng các yêu cầu của người lập trình như hiển thị dữ liệu, thêm, xoá, sửa dữ liệu, làm việc trên từng dòng dữ liệu thay vì một tập hợp nhiều mẩu tin, … Có thể coi Record. Set như đại diện của một bảng hay một view trong CSDL. • Người dùng có thể mở Record. Set để lấy dữ liệu từ một bảng hay nhiều bảng trong CSDL bằng một câu truy vấn SQL hay đơn giản bằng cách chỉ ra tên bảng. • Việc mở Record. Set được thực hiện qua hành động Open. • Khai báo Record. Set như sau : Dim <Tên RST> As New ADODB. Record. Set
Menu Về Tiếp Cú pháp : <Recordset>. Open [Source], [Active. Connection], [Cursor. Type], [Lock. Type] Mô tả : • Source : Nội dung cần truy xuất • Active. Connection : Nội dung khai báo Connection. String hoặc tên Connection đang được mở • Cursor. Type : Phân loại recordset. Có các giá trị sau : + ad. Open. Static [3] : mẩu tin tạo tại máy con. Không tự động cập nhật + ad. Open. Dynamic [2] : mẩu tin tạo trên máy chủ. Tự động cập nhật. + ad. Open. Key. Set [1] : không tự động cập nhật các mẩu tin + ad. Open. Foreward. Onle [0] : Chỉ di chuyển bằng Move. Next
Menu Về • Cursor. Type : Xác định cách khoá dữ liệu khi cập nhật. Có các giá trị sau : + ad. Lock. Read. Only : [1] chỉ cho phép đọc (luôn khoá) + ad. Lock. Optimistic : [2] chỉ khoá khi cập nhật mẩu tin + ad. Lock. Batch. Optimistic : [3] giống [2] nhưng cho phép cập nhật đồng thời nhiều mẩu tin. + ad. Lock. Pessimistic : [4] mẩu tin sẽ khoá ngay khi thực hiện Update hay Add. New. chỉ dùng khi Cursor. Location là ad. Use. Server Ví dụ : Mở recordset với nguồn dữ liệu là bảng sinh viên. Dim rs. Sinh. Vien As New ADODB. Recordset Sub Lay_Nguon_Sinh. Vien() sql = "SINHVIEN" If rs. Sinh. Vien. State = 1 Then rs. Sinh. Vien. Close rs. Sinh. Vien. Open sql, cnn, 3, 3 End Sub
Menu 2, Các thuộc tính của Record. Set Record. Count : tổng số mẩu tin trong Record. Set Absolute. Position : vị trí mẩu tin hiện hành BOF, EOF : vị trí đầu và cuối trong cấu trúc Record. Set BOF Record 1 Record 2 … Record n -1 Record n EOF
Menu Tiếp 3, Các hành động của Record. Set a, Hiển thị dữ liệu : • Record. Set được dùng làm nguồn dữ liệu (data source) cung cấp dữ liệu cho các control khác để hiển thị thông tin trong chương trình. • Các control liên kết dữ liệu với Record. Set thông qua hai thuộc tính Data. Source và Data. Field. Ví dụ : Lấy nguồn sinh viên và hiển thị lên Text. Box Dim rs. Sinh. Vien As New ADODB. Recordset Sub Lay_Nguon_Sinh. Vien() sql = "SINHVIEN" If rs. Sinh. Vien. State = 1 Then rs. Sinh. Vien. Close rs. Sinh. Vien. Open sql, cnn, 3, 3 Set txt. Ma. SV. Data. Source = rs. Sinh. Vien txt. Ma. SV. Data. Field = "Ma. SV" Set txt. Ho. Ten. SV. Data. Source = rs. Sinh. Vien txt. Ho. Ten. SV. Data. Field = "Ho. Ten" End Sub
Menu 3, Các hành động của Record. Set b, Di chuyển qua lại giữa các bản ghi : Sử dụng hành động Move. First : di chuyển về bản ghi đầu tiên Move Previous : di chuyển về bản ghi phía trước Move. Next : di chuyển đến bản ghi kế tiếp Move. Last : di chuyển tới bản ghi cuối cùng Về Tiếp
Menu Về 3, Các hành động của Record. Set Dim rs. Sinh. Vien As New ADODB. Recordset Private Sub cmd. Dau_Click() rs. Sinh. Vien. Move. First End Sub Private Sub cmd. Truoc_Click() If rs. Sinh. Vien. Absolute. Position > 1 Then rs. Sinh. Vien. Move. Previous End If End Sub Private Sub cmd. Sau_Click() If rs. Sinh. Vien. Absolute. Position < rs. Sinh. Vien. Record. Count Then rs. Sinh. Vien. Move. Next End If End Sub Private Sub cmd. Cuoi_Click() rs. Sinh. Vien. Move. Last End Sub Tiếp
Menu Về 3, Các hành động của Record. Set c, Cập nhật dữ liệu : Add. New : dùng để thêm mới 1 bản ghi Update / Update. Batch : chấp nhận cập nhật sự thay đổi Cancel. Update / Cancel. Batch : bỏ qua sự thay đổi Delete : Xoá bỏ bản ghi Tiếp
Menu 3, Các hành động của Record. Set Dim rs. Sinh. Vien As New ADODB. Recordset Private Sub cmd. Them. Moi_Click() rs. Sinh. Vien. Add. New End Sub Private Sub cmd. Sua. Doi_Click() rs. Sinh. Vien. Update End Sub Private Sub cmd. Xoa. Bo_Click() rs. Sinh. Vien. Delete End Sub Về Tiếp
Menu Về d, Lọc, tìm kiếm và sắp xếp mẩu tin • Trong những trường hợp chỉ muốn làm việc hay hiển thị trong chương trình một số mẩu tin thoả điều kiện nào đó, người dùng có thể thuộc tính Filter để lọc ra những mẩu tin muốn làm việc. Ví dụ: rs. Sinh. Vien. Filter = “Ma. Khoa = ‘TH 01’ And Diem. TB >= 5” • Để tìm ra một mẩu tin thoả điều kiện, Record. Set cung cấp sẵn hành động Find. Điểm giới hạn của ADODB là hành động Find của Record. Set chỉ có thể tìm trên một điều kiện đơn (không có mệnh đề AND, OR, …) Ví dụ: rs. Sinh. Vien. Find “Ma. Khoa = ‘TH 01’”, 0, ad. Search. Forward, 1 • Thay vì phải sắp xếp các mẩu tin lại thời điểm mở Record. Set trong câu truy vấn, Record. Set cung cấp thuộc tính Sort cho phép người dùng thay đổi cách sắp xếp các mẩu tin tuỳ ý. Ví dụ: rs. Sinh. Vien. Sort “Ma. Khoa, Diem. TB Desc, Ma. SV”
III, Đối tượng Command Menu Tiếp Command cho phép thi hành : A, Các câu SQL tĩnh, ví dụ: Dim rs. Sinh. Vien As ADODB. Recordset, Cmd As ADODB. Command Set Cmd = New ADODB. Command Set Cmd. Active. Connection = CN Cmd. Command. Text = "Select * From Sinh. Vien Where Diem. TB>=5" Cmd. Command. Type = ad. Cmd. Text set rs. Sinh. Vien=cmd. Execute B, Các câu SQL có tham số, ví dụ: Dim rs. Sinh. Vien As ADODB. Recordset, Cmd As ADODB. Command Set Cmd = New ADODB. Command Set Cmd. Active. Connection = CN Cmd. Command. Text = "Select * From Sinh. Vien Where Diem. TB>=? And Ma. Khoa=? " Cmd. Command. Type = ad. Cmd. Text Set rs. Sinh. Vien = Cmd. Execute(, Array(5, "TH 01"))
III, Đối tượng Command Menu Về C, Các stored procedure (query trong Access) Dim rs. Sinh. Vien As ADODB. Recordset, Cmd As ADODB. Command Set Cmd = New ADODB. Command Set Cmd. Active. Connection = CN Cmd. Command. Text = "Q_DS_SV_Tot. Nghiep" Cmd. Command. Type = ad. Cmd. Stored. Proc set rs. Sinh. Vien=cmd. Execute Chú ý : Với các query (stored procedure) có tham số, có thể dùng tập hợp Parameters hay hành động Create. Parameter để truyền tham số cho query trước khi thực hiện cũng như nhận các giá trị trả về.
- Slides: 16