Giáo trình đào tạo Visual Basic 6.0
1 Mục lục
1 Mục lục 1
2 Làm quen với visual basic 6.0 9
2.1 Xây dựng ứng dụng ban đầu 9
2.1.1 Viết ứng dụng ban đầu 9
2.1.2 Xây dựng tính năng Calendar 9
2.1.3 Thêm tính năng Clock 11
2.2 Các tính năng mới trong Visual basic 6.0 11
2.2.1 Khái quát vắn tắt về Visual basic 6.0 11
2.2.2 Khai thác thế mạnh của các điều khiển mở rộng 12
2.3 Làm việc với môi trường lập trình trong Visual basic 12
2.3.1 Tìm hiểu các phần của IDE 12
2.3.2 Thêm và xoá các thanh công cụ trong IDE của Visual basic 13
2.3.3 Thêm các điều khiển vào hộp công cụ 14
2.3.4 Định hướng thông qua cửa sổ form và code 14
2.3.5 Quản lý ứng dụng với project explorer 14
2.3.6 Cửa sổ properties 14
2.3.7 Hiển thị IDE 14
2.3.8 Trợ giúp 15
3 Tìm hiểu Visual basic 6 16
3.1 Thuộc tính phương thức và sự kiện 16
3.1.1 Đối tượng 16
3.1.2 Thuộc tính 16
3.1.3 Phương thức 17
3.1.4 Sự kiện 18
3.1.5 Mối quan hệ giữa phương thức, thuộc tính và sự kiện 18
3.1.6 Cửa sổ Properties 19
3.1.7 Viết chương trình sử dụng thuộc tính, phương thức và sự kiện 20
3.2 Làm việc với một đề án 24
3.2.1 Định nghĩa 24
3.2.2 Cửa sổ Project Explorer 25
3.2.3 Tạo đề án 25
3.2.4 Đổi thuộc tính đề án 25
3.2.5 Lưu và đặt tên đề án 26
3.2.6 Mở đề án có sẵn 26
3.2.7 Thêm xoá và lưu tập tin trong đề án 27
3.2.8 Thêm điều khiển vào đề án 29
3.2.9 Tạo tệp tin EXE 30
3.2.10 Sửa đổi thuộc tính đề án 31
3.3 Làm việc với nhiều đề án 32
3.3.1 Sử dụng Project Group 32
3.3.2 Thêm đề án vào nhóm đề án 32
3.3.3 Xoá đề án trong nhóm đề án 33
4 Làm việc với các điều khiển 34
4.1 Các loại điều khiển 34
4.1.1 Thao tác với điều khiển 34
4.2 Các điều khiển nội tại 37
4.2.1 Nút lệnh 37
4.2.2 Hộp văn bản 38
4.2.3 Điều khiển thanh cuộn 38
4.2.4 Điều khiển Timer 39
4.2.5 Điều khiển nhãn 39
4.2.6 Checkbox: 39
4.2.7 Một số thuộc tinh thông dụng: 39
4.2.8 4.2.9 Hộp danh sách (Listbox). 39
4.3 Các điều khiển M ới 40
5 Nhập môn lập trình 41
5.1 Chuẩn lập trình (Coding convention) 41
5.1.1 Coding conventions 41
5.1.2 Form design standard 46
5.1.3 Report design standard (for Crystal Report) 49
5.1.4 Database design standards 50
5.2 Thiết kế trước khi viết chương trình 51
5.3 Các thao tác thông dụng trong cửa sổ Code 51
5.3.1 Soạn thảo Code 51
5.3.2 Một số chức năng tự động 52
5.4 Biến hằng và các kiểu dữ liệu 52
5.4.1 Khai báo biến 52
5.4.2 Khai báo ngầm 52
5.4.3 Khai báo tường minh 53
5.4.4 Khai báo biến Static 53
5.4.5 Hằng 53
5.5 Hàm và thủ tục 60
5.6 Cấu trúc điều khiển 61
5.6.1 Cấu trúc chọn 61
5.6.2 Cấu trúc lặp 62
5.6.3 Làm việc với cấu trúc 63
5.7 Gỡ rối chương trình 63
5.7.1 Một số giải pháp giảm lỗi 63
5.7.2 Gỡ rối 64
5.8 Bẫy lỗi 65
5.8.1 Lệnh On Error 65
5.8.2 Kết thúc bẫy lỗi 65
6 Lập trình xử lý giao diện 66
6.1 Menu 66
6.1.1 Dùng trình soạn thảo menu để tạo menu 66
6.1.2 Viết chương trình điều khiển menu 67
6.2 Hộp thoại 67
6.2.1 Thông điệp(Message box) 67
6.2.2 Hộp nhập(Input box) 68
6.2.3 Các hộp thoại thông dụng(Common dialog) 68
6.2.4 Hộp thoại hiệu chỉnh 69
6.3 Thanh công cụ(ToolBar) 69
6.3.1 Trong ứng dụng đơn giản 69
6.3.2 Nhúng đối tượng 69
6.4 Thanh trạng thái 69
6.5 Xử lý chuột và bàn phím 70
6.5.1 sự kiện chuột 70
6.5.2 Hiệu chỉnh con trỏ chuột 70
6.5.3 Sự kiện bàn phím 70
7 Xử lý tập tin 72
7.1 Mô hình FSO(File System Object model) 72
7.2 Xử lý các tập tin với các dòng lệnh và hàm I/O cổ điển 72
7.2.1 Các kiểu truy cập tập tin 72
7.3 Các điều khiển trên hệ thống tập tin 75
7.3.1 Hộp danh sách ổ đĩa 75
7.3.2 Hộp danh sách thư mục 75
7.3.3 Hộp danh sách tập tin 76
7.4 Điều khiển richtextbox 76
7.4.1 Phương thức loadfile 77
7.4.2 Phương thức savefile 77
8 Sử dụng DLL và Windows API 78
8.1 DLL và cấu trúc của Windows 78
8.1.1 Các hộp thoại thông dụng 78
8.2 WIN API 79
8.3 Sử dụng API 80
8.3.1 Tìm kiếm API 80
8.3.2 Các DLL của Windows 80
8.3.3 Gọi API 81
8.4 Dùng API khai thác khả năng Multimedia 84
8.4.1 Lớp multimedia 84
9 Thêm trợ giúp vào ứng dụng 96
9.1 Thêm hỗ trợ cho Help 96
9.1.1 Thuộc tính HelpFile 96
9.1.2 Thuộc tính HelpContextID 96
9.2 Thêm hỗ trợ cho WHAT’S THIS HELP 97
9.2.1 Kích hoạt What’s This Help cho biểu mẫu 97
9.3 Cung cấp help cùng với ứng dụng 98
9.3.1 Cung cấp WinHelp 98
9.3.2 Cung cấp HTML Help 98
10 Lập trình hướng đối tượng 99
10.1 Giới thiệu về đối tượng 99
10.1.1 Đối tượng trong VB 100
10.1.2 Modul Lớp 100
10.1.3 Tham số tuỳ chọn 105
10.1.4 Sự kiện của lớp 106
10.1.5 Huỷ đối tượng 107
10.2 Biến đối tượng 108
10.2.1 Tạo điều khiển lúc thi hành 108
10.2.2 Sự kiện của mảng điều khiển 109
10.2.3 Quản lý điều khiển như biến đối tượng 110
10.2.4 Khai báo biến đối tượng 112
10.3 Tập hợp 114
10.3.1 Thuộc tính Controls 114
10.3.2 Xác định điều khiển trên biểu mẫu 114
10.4 Biểu mẫu MDI 117
10.4.1 Biểu mẫu con (Child Form) 117
10.4.2 Tạo Instance của biểu mẫu 117
10.4.3 Xác định biểu mẫu 118
10.4.4 Tạo danh sách cửa sổ 118
11 Công cụ trong VB6 120
11.1 ADD-INS 120
11.2 Các công cụ trong ADD-INS 120
11.2.1 Trình cài đặt ứng dụng 120
11.2.2 Trình đối tượng dữ liệu tự động 120
11.2.3 Trình xây dựng dữ liệu tự động 121
11.2.4 Trình thiết kế Add-ins tự động 122
11.2.5 Trình thiết kế tự động 122
11.2.6 Tiện ích xây dựng lớp 123
11.2.7 Trình tạo thanh công cụ tự động 123
11.3 Trình đóng gói và triển khai ứng dụng 124
11.3.1 Phát hành ứng dụng 124
11.3.2 Trình đóng gói và triển khai ứng dụng 124
11.3.3 Mở trình đóng gói và triển khai trong VB 124
11.3.4 Mở trình đóng gói và triển khai như một ứng dụng độc lập. 124
11.3.5 Thi hành Wizard dưới chế độ silent 125
11.3.6 Setup toolkit 125
11.4 Bài tập 126
12 Những khái niệm cơ bản về CSDL 127
12.1 Cơ sở dữ liệu là gì? 127
12.1.1 Bộ máy (Engine) cơ sở dữ liệu là gì? 127
12.1.2 Bản và trường 128
12.1.3 Recordset là gì ? 129
12.1.4 Các kiểu cơ sở dữ liệu 129
12.1.5 Tạo lược đồ cơ sở dữ liệu 130
12.1.6 Dùng Visual Basic để tạo một cơ sở dữ liệu 130
12.1.7 Các mối quan hệ 140
12.1.8 Chuẩn hoá 141
12.2 Sử dụng cửa sổ xem dữ liệu 143
12.3 Tạo trình thiết kế môi trường dữ liệu 145
12.3.1 Tạo một giao diện người sử dụng với thiết kế DATAENVIRONMENT 146
12.4 Sử dụng điều khiển dữ liệu để tạo giao diện người sử dụng 147
12.4.1 Kết nối với một cơ sở dữ liệu và làm việc với các mẩu tin 148
12.4.2 Tạo một giao diện người sử dụng cơ bản 150
12.4.3 Thao tác trên các mẩu tin thông qua điều khiển ADO Data 151
12.4.4 Các thuộc tính quan trọng khác của điều khiển ADO DATA 155
12.5 Tổng kết 156
12.6 Hỏi và Đáp 157
13 Các đối tượng truy cập dữ liệu 158
13.1 Sử dụng mô hình đối tượng DAO 158
13.1.1 Lập trình với đối tượng 160
13.1.2 Sử dụng điều khiển DAO Data 160
13.1.3 Sử dụng thuộc tính Connect của điều khiển DAO Data để truy cập nguồn dữ liệu bên ngoài 160
13.2 Sử dụng DAO để làm việc với dữ liệu 161
13.2.1 Dùng đối tượng DataBase để kết nối với một CSDL 161
13.2.2 Sử dụng đối tượng Recordset 162
13.2.3 Chỉ ra các tuỳ chọn cho Recordset 163
13.3 Sử dụng đối tượng Field để thao tác với các trường 163
13.4 Sửdụng các phương thức duyệt với đối tượng Recorset 164
13.4.1 Sử dụng BOF và EOF để duyệt qua Recordset 164
13.4.2 Dùng BOF và EOF để xác định một Recordset có rỗng hay không 164
13.4.3 Dùng thuộc tính RecordCout để xác định số mẩu tin trong một recordset 165
13.4.4 Dùng phương thức Edit để sửa đổi giá trị trong một mẩu tin 165
13.4.5 Sử dụng phương thức AddNew và Update để tạo mẩu tin mới 166
13.4.6 Sử dụng AppendChunk để nối dữ liệu vào một trường nhị phân 167
13.4.7 Sử dụng phương thức Close để đóng Recordset 168
13.5 Tìm kiếm dữ liệu trong Recordset và bảng 168
13.5.1 Sử dụng phương thức Find để định vị mẩu tin trong một recordset 168
13.5.2 Sử dụng phương thức Seek để thi hành tìm kiếm theo chỉ mục 169
13.5.3 Lặp qua suốt tập hợp Indexes của TableDef 170
13.5.4 Sử dụng thuộc tính Bookmark để ghi nhớ vị trí trong một Recordset 171
13.5.5 sử dụng tập hợp Errors và đối tượng Error để xử lý lỗi 171
13.6 Tạo đối tượng để thao tác trên cấu trúc của một CSDL 172
13.6.1 Tạo một CSDL 172
13.6.2 Sử dụng đối tượng TableDef để thao tác với bảng 173
13.7 Làm việc với tài liệu và nơi chứa CSDL 178
13.8 Tạo và sử dụng các thuộc tính hiệu chỉnh của đối tượng DataBase 179
13.9 Tổng kết 180
13.10 Hỏi và đáp 181
14 Thiết lập báo cáo và Xuất thông tin 182
14.1 Sử dụng thiết kế DataReport 182
14.1.1 Thiết kế với DataReport 183
14.1.2 Xem và xuất DataReport 185
14.2 Sử dụng Microsoft Access để làm báo cáo 185
14.2.1 Thi hành báo cáo của Access từ Visual Basic 185
14.3 Sử dụng Crystal report để lập báo cáo 190
14.3.1 Cài đặt Crystal Reports 190
14.3.2 Dùng Crystal Reports tạo báo cáo 191
14.3.3 Thi hành báo cáo trong ứng dụng với điều khiển ActiveX của Crystal Reports 193
14.3.4 Sử dụng bản mới hơn của Crystal Reports 193
15 ODBC và các đối tượng dữ liệu từ xa 194
15.1 Định cấu hình và sử dụng ODBC 194
15.1.1 Kiến trúc của ODBC 194
15.1.2 Tạo nguồn dữ liệu 194
15.1.3 Truy cập nguồn dữ liệu với điều khiển DAO DATA và ODBCDIRECT 197
15.2 Truy cập dữ liệu dùng điều khiển dữ liệu từ xa 198
15.2.1 Sử dụng RDC 198
15.3 Sử dụng RDO trong chương trình 199
15.3.1 Quy định thuộc tính bộ máy cơ sở dữ liệu dùng đối tượng RDOENGINE. 200
15.3.2 Truy cập môi trường đối tượng rdoEnvironment 200
15.3.3 Thiết lập kết nối dùng đối tượng rdoConnection 201
15.3.4 Đáp ứng sự kiện trong RDO 203
15.4 Tạo kết nốI với trình thiết kế uerconnecttion 204
15.5 Truy cập truy vấn với trìng thiết kế UserConnection 206
15.5.1 Gọi thủ tục chứa sẵn trong một trình thiết kế UserConnection 206
15.5.2 Dùng Microsotf Query để xây dựng chuỗi SQL trong trình thiết kế UserConnection. 208
15.6 Sử dụng dữ liệu với đối tượng rdorerultset 209
15.7 Thi hành truy vấn với đối tượng rdoQuery 209
16 Truy cập cơ sở dữ liệu với lớp 211
16.1 Làm việc với lớp và đối tượng 212
16.1.1 Tạo cây phân nhánh lớp với tiện ích xây dựng lớp 212
16.1.2 Sử dụng biểu mẫu như lớp 216
16.2 Tạo Intance bội cho biểu mẫu 218
16.2.1 Sử dụng lớp và đối tượng trong truy cập cơ sở dữ liệu 218
16.3 Tạo các lớp cần sử dụng dữ liệu 221
16.3.1 Tạo lớp xuất dữ liệu 223
16.3.2 Triển khai lớp thành Active Server 224
16.4 Tổng kết 229
17 Truy cập dữ liệu từ xa 230
17.1 Client / Server và các thành phần 230
17.1.1 Cấu trúc Cilent/Server Three- Tier 230
17.2 251
18 Đối tượng dữ liệu ActiveX 252
18.1 Xây dựng ứng dụng Visual basic với ADO 252
18.1.1 Tìm hiểu cấu trúc OLE DB / ADO 252
18.1.2 Cài đặt và thiết lập tham chiếu đến ADO trong ứng dụng Visual basic 253
18.1.3 Sử dụng ADO với các thư viện đối tượng truy cập dữ liệu khác 254
18.1.4 Dùng đối tượng connection của ADO để kết nối với nguồn dữ liệu 254
18.1.5 Làm việc với con trỏ 255
18.1.6 Khoá bản ghi trong ADO 257
18.1.7 Sử dụng đối tượng Recordset của ADO để thao tác với dữ liệu 257
18.1.8 Tạo Recordset ngắt kết nối 258
18.2 Sử dụng dịch vụ dữ liệu từ xa của ADO 259
2
ĩa là thông tin chính xác được mong chờ bởi trình điều khiển ODBC có thể thay đổi tuỳ theo cách thực hiện. Đối với các trình cung cấp khác, chuỗi kết nối có thể có một cú pháp hoàn toàn khác. Khi ta dùng trình cung cấp ODBC, thuộc tính ConnectionString có thể là một DSN (tên nguồn dữ liệu) hay nó là kết nối không có DSN. Đây là một ví dụ của một kết nối đến cơ sở dữ liệu dùng trình cung cấp ODBC với DSN: Cn.Provider = “MSDASQL” Cn.ConnectionString = “DSN = Novelty;” Sử dụng DSN trong chuỗi kết nối dĩ nhiên yêu cầu một DSN tên là Novelty phải thực sự tồn tại trên máy Client. Trường hợp kết nối không có DSN: Cn.Provider = “MSDASQL” Cn.ConnectionString = “DRIVER = {SQL Server}; DATABASE = Novelty; UID = sa ; PD = ;” Kết nối này sẽ nối kết Server nhanh hơn bởi vì nó không cần đọc thông tin DSN từ bảng đăng ký của Windows. Tuy nhiên, nó kém linh hoạt vì nó gắn chặt thông tin với chương trình đã được biên dịch Làm việc với con trỏ Tương tự RDO và DAO, ADO hỗ trợ một số kiểu con trỏ. Ngoài việc cung cấp hỗ trợ duyệt qua từng bản ghi tại một thời điểm, các kiểu con trỏ khác nhau cho phép ta điều khiển cách quản lý của một Recordset. Quy định vị trí của con trỏ bằng cách gán giá trị cho thuộc tính Recordset. Sau đây là các kiểu con trỏ của đối tượng Connection: Kiểu con trỏ Hằng Mô tả Phía Client adUseClient Tạo con trỏ phía Client Phía Server adUseServer Tạo con trỏ phía Server Chọn con trỏ kiểu Client nghĩa là ADO và OLE DB xử lý các hoạt động của con trỏ. Con trỏ Client thường không có sẵn trên server. Ví dụ, trong ADO, ta có thể tạo một Recordset không kết nối, cho phép ta thao tác với các bản ghi mà không có kết nối thường xuyên đến server. Khả năng này là một chức năng của thư viện con trỏ phía Client. Trong ADO, thuộc tính CursorLocation áp dụng cho cả đối tượng Recordset và Connection. Nếu ta gán thuộc tính CursorLocation của đối tượng Connection, tất cả Recordset mà ta tạo từ kết nối đó đều có cùng vị trí con trỏ như đối tượng Connection. Ngoài việc chỉ ra vị trí con trỏ, ta có khả năng tạo 4 kiểu con trỏ khác nhau trong ADO. Việc chọn lựa con trỏ tuỳ theo sự cân đối giữa chức năng và khả năng hoạt động. Chỉ ra kiểu con trỏ bằng cách gán thuộc tính CursorType của đối tượng Recordset. Sau đây là các kiểu con trỏ có thể tạo trong ADO: Kiểu con trỏ Hằng Mô tả Forward-only adOpenForwardOnly Không dùng con trỏ - ta chỉ có thể chuyển về phía trước Recordset; sử dụng phương thức MovePrevious và MoveFirst sẽ sinh lỗi. Keyset(Trong ADO được gọi là dynaset) adOpenKeyset Ta không thể tháy các bản ghi mới do người dùng khác thêm vào, nhưng khi họ sửa đổi hay xoá tin sẽ làm ảnh hưởng đến Recordset ta đang làm việc; đây là kiểu con trỏ hiệu quả nhất, đặc biệt là khi Recordset khá lớn. Dynamic adOpenDynamic Ta có thể thấy toàn bộ thay đổi trên dữ liệu do những người sử dụng khác thực hiện trong khi ta đang mở Recordset; đây là kiểu con trỏ ít hiệu quả nhất nhưng mạnh mẽ. Static(Trong DAO gọi là snapshot) adOpenStatic Bản sao của toàn bộ dữ liệu của một Recordset; kiểu này đặc biệt hữu dụng khi ta đang tìm kiếm dữ liệu hay khi thi hành báo cáo; kiểu con trỏ này rất hữu dụng cho các Recordset nhỏ. Dĩ nhiên, lý do để ta chọn con trỏ kiểu forward-only thay vì keyset hay dynamic là khả năng hoạt động của - nếu ta chỉ hiển thị dữ liệu chứa trong cơ sở dữ liệu – con trỏ kiểu forward-only sẽ làm khả năng hoạt động của ứng dụng hiệu quả hơn. Lưu ý rằng, nếu trình cung cấp dữ liệu không thể tạo ra điều khiển con trỏ mà ta yêu cầu, nó sẽ tạo ra con trỏ mà nó có thể. Nói chung, nó sẽ không báo lỗi trừ phi ta cố thi hành một tác vụ nào đó vốn bị cấm đối với kiểu con trỏ. Xác định con trỏ và các tính năng khác được hỗ trợ bởi một trình cung cấp Bởi vì OLE DB và ADO được thiết kế để cho phép truy cập đến nhiều nguồn dữ liệu, ứng dụng cần xác định các tính năng do một trình cung cấp nhất định hỗ trợ. Có thể là trong khi một hệ cơ sở dữ liệu quan hệ cho phép tạo con trỏ kiểu forword-Only ở phía server, hệ cơ sở dữ liệu trên máy cá nhân hoặc cơ sở dữ liệu dựa trên tập tin có thể không có tính năng này. Phương thức supports của đối tượng ADO Recordset xác định kiểu con trỏ do trình cung cấp dữ liệu hỗ trợ. Bảng sau đây liệt kê các giá trị truyền vào phương thức Supports để xác định tính năng được hỗ trợ bởi đối tượng Recordset: Hằng Mô tả adAddnew Thêm bản ghi vào Recordset adApproxPosition Thuộc tính AbsolutePage và AbsolutePosition có sẵn; chúng được dùng để kết hợp với thuộc tính Pagesize và PageCount của đối tượng Recordset để cho phép xác định trang chứa bản ghi hiện hành. adBookmark Có thể quy định đánh dấu trang sách trong Recordset adDelete Bản ghi được xoá trong Recordset adHoldRecords Bản ghi được trả về từ cơ sở dữ liệu mà không cần ghi sửa đổi hiện có vào server. adMovePrevious Có thể cuộn tới lui trong Recordset adResync Phương thức này có sẵn adUpdate Recordset cập nhật được adUpdateBatch Recordset có thể cập nhật được hàng loạt với phương thức UpdateBatch. Ta có thể nạp các sửa đổi trên nhiều mẫu tin trong một hoạt động duy nhất, cải tiến hiệu quả Client/Server Khoá bản ghi trong ADO Tương tự các mô hình đối tượng truy cập cơ sở dữ liệu khác, ADO cho phép quy định các kiểu khoá bản ghi(Record - locking) khác nhau. Ta dùng tính năng này khi cần kiểm soát cách thức cập nhật các bản ghi với nhiều người sử dụng trong cơ sở dữ liệu. Quy định chế độ khoá cho đối tượng Recordset của ADO thông qua thuộc tính LockType. Dưới đây là danh sách 4 kiểu khoá bản ghi. Hằng Mô tả adLockReadOnly Cấm cập nhật bản ghi adLockPressimistic Bản ghi trong Recordset bị khoá khi bắt đầu sửa đổi, và tiếp tục bị khoá đến khi thi hành phương thức Update hay chuyển sang bản ghi khác. adlockOptimistic Bản ghi bị khoá ngay khi thi hành phương thức Update hay di chuyển sang bản ghi khác. adlockBatchOptimistic Hỗ trợ cập nhật nhiều bản ghi cùng lúc. Điểm quan trọng cần lưu ý là phương thức khoá mặc định trong ADO là adLockReadOnly. Đây là một trong các điểm khác biệt đáng kể giữa lập trình ADO và DAO, vì trong DAO bởi mặ định Recordset được phép sửa đổi. Điều này có nghĩa là nếu ta không đổi thuộc tính LockType và CursorType, các Recordset của DAO luôn là chỉ đọc. Sự hiện diện của các kiểu khoá bản ghi phụ thuộc vào những gì trình cung cấp dữ liệu hỗ trợ. Ta có thể dùng phương thức support của đối tượng Recordset để xác định trình cung cấp có hỗ trợ kiểu khoá bản ghi hay không. Sử dụng đối tượng Recordset của ADO để thao tác với dữ liệu Đối tượng Recordset của ADO, tương tự Recordset của DAO và rdoresultset của RDO, là phương pháp truy cập thông tin được trả về từ trình cung cấp dữ liệu. Recordset của ADO có nhiều thuộc tính và phương thức trùng với Recordset của các mô hình khác, vì thế có thể làm việc với chúng tương tự các Recordset khác. Vị trí của Recordset của ADO trong mô hình đối tượng ADO: Thủ tục tạo Recordset cảu ADO tương tự tạo rdorseultset của RDO. Tuy nhiên, ADO thêm một thay đổi lý thú: khả năng tạo đối tượng Recordset không đòi hỏi một đối tượng Connection ngầm. Dùng đối tượng Recordset để cập nhật và thêm bản ghi mới Thêm mới và cập nhật bản ghi trong ADO hầu như tương tự như trong DAO. Thêm mới bản ghi: Mở Recordset Thi hành phương thức AddNew Gán giá trị cho các trường đối tượng Recordset Lưu bản ghi bằng phương thức Update của Recordset Cập nhật bản ghi: Mở Recordset Gán giá trị cho các trường trong Recordset Lưu bản ghi bằng thi hành phương thức Update Tạo Recordset ngắt kết nối Khi dùng con trỏ phía Client của ADO, ta có khả năng ngắt kết nối với server và tiếp tục làm việc với dữ liệu. Cách này làm cho ứng dụng trở nên linh hoạt, bởi vì nhiều người sử dụng có thể làm việc với dữ liệu nếu họ không cần kết nối đến Server. Để ngắt kết nối với Server trong ADO, ta quy định thuộc tính ActiveConnection của đối tượng Recordset là Nothing. Client sẽ tiếp tục làm việc với dữ liệu thậm chí khi nó không kết nối với server. Sử dụng dịch vụ dữ liệu từ xa của ADO Dịch vụ dữ liệu từ xa (Remote Data Service - RDS) dùng để lấy các Recordset của ADO từ web server. Thư viên này đi kèm với ADO, chủ yếu cho phép ta dùng HTTP làm vận chuyển trên mạng cho ứng dụng cơ sở dữ liệu. Chủ yếu được dùng trong các ứng dụng trình duyệt web, nó cũng hoạt động tốt với các Client của Visual basic. Lưu ý RDS có tên cũ là Nối dữ liệu nâng cao (Advance Data Connector) bạn có thể tìm hiểu thêm tại địa chỉ: Ta cũng có thể dùng đối tượng DataControl của RDS để lấy về một đối tượng Recordset của ADO trên Internet. Đối tượng này, được phục vụ từ một máy tính chạy với IIS 3.0(microsoft Internet Infomation Server) trở lên, có khả năng trả về đối tượng Recordset của ADO đến bất kỳ Client qua HTTP. Cách dễ nhất để minh hoạ cách dùng RDS là thi hành một truy vấn trên Web server dùng đối tượng DataControl của RDS. Tạo một đề án Standard EXE mới Trong menu Project Referances, lập một tham chiếu đến Microsoft ActivateX Data Objects 2.0 Recordset Library Tạo một hộp văn bản, một nút lệnh, và một danh sách trên biểu mẫu. Đưa đoạn chương trình sau: Option Explicit Private rdc As RDS.DataControl Private Sub cmdQuery_Click() Screen.MousePointer = vbHourglass Set rdc = New RDS.DataControl rdc.SQL = "select * from tblCustomer where state = 'IN'" rdc.ExecuteOptions = adcExecAsync rdc.Connect = "DSN=JetNovelty;" rdc.Server = "" rdc.Refresh While rdc.ReadyState = adcReadyStateLoaded ' busy DoEvents Wend Do Until rdc.Recordset.EOF With rdc.Recordset lstCustomer.AddItem.Fields("FirstName") & " " & _ .Fields("LastName") .MoveNext End With Loop Set rdc = Nothing Screen.MousePointer = vbNormal End Sub Trong ví dụ này, server “localhost” được dùng. Đây là một cách gọi tắt của Web server chứa trên cùng một máy. Nó rất tiện dụng khi cần kiểm nghiệm chương trình.Vòng lặp While Wend dùng để chờ đáp ứng của server. Đây là tính năng bất đồng bộ của lênh gọi HTTP. Ta không thể chắc chắn mất bao nhiêu lâu thì server đáp ứng, vì vậy ta phải chờ.
File đính kèm:
- Giao trinh Visual Basic.doc