
Chương Mười lăm - Lập trình với ADO
Thông tin tài liệu:
Nội dung trích xuất từ tài liệu:
Chương Mười lăm - Lập trình với ADO Chương Mười Lăm - Lập trình với kỹ thuật DAOReference DAOTrong bài nầy ta sẽ học những cách lập trình căn bản với MS Access database quakỹ thuật DAO mà không cần dùng đến Control Data như trong bài trước. Ta sẽcần đến vài Objects trong thư viện DAO, do đó nếu bạn mở một dự án VB6 mới thìhãy dùng Menu Command Project | References... để chọn Microsoft DAO 3.51Object Library bằng cách click cái checkbox bên trái như trong hình dưới đây. (Mộtcách để nhớ tên của Object nầy là nhớ câu thằng cha cua ĐÀO 35 con dê).Sau đó trong code của Form chính ta sẽ declare variable myDatabase cho mộtinstance của DAO database và variable myRS cho một DAO recordset. Ở đây ta nóirõ Database và Recordset là thuộc loại DAO để phân biệt với Database và Recordsetthuộc loại ADO (ActiveX Data Object) sau nầy. Để ý là Intellisense giúp ta tronglúc viết code:Bây giờ bạn hãy đặt lên Form chính, tên frmDAO, 4 labels với captions: Title, YearPublished, ISBN và Publisher ID. Kế đó cho thêm 4 textboxes tương ứng và đặt tênchúng là txtTitle, txtYearPublished, txtISBN và txtPublisherID.Điều ta muốn làm là khi Form mới được loaded, nó sẽ lấy về từ database mộtRecordset chứa tất cả records trong table Titles theo thứ tự về mẫu tự (alphabeticalorder) của field Title và hiển thị record đầu tiên.Dùng keyword SETChuyện trước hết là mở một Database Object dựa vào tên đầy đủ (full path name)của Access database: Open main database Set myDB = OpenDatabase(AppFolder & BIBLIO.MDB)Để ý chữ Set trong câu code trên. Đó là vì myDB là một Pointer đến một Object.Mặc dầu từ rày về sau ta sẽ dùng myDB như một Database theo cách giống như bấtcứ variable thuộc data type nào khác, nhưng khi chỉ định lần đầu là nó từ đâu đến thìta dùng chữ Set, để nói rằng thật ra myDB không phải là Object Database, nhưng làPointer đến Object Database. Điểm nầy càng nói đến càng khó hiểu.Đại khái là VB6 runtime dynamically allocates (dành ra cho khi cần) một phần trongbộ nhớ (memory) để chứa Object Database khi ta nhận được nó từ execution củaMethod OpenDatabase. Dầu vị trí chỗ chứa Object Database trong bộ nhớ khôngnhất định, nhưng vì ta nắm cái cán chỉ đến vị trí ấy nên ta vẫn có thể làm việc vớinó một cách bình thường. Cái cán ấy là value (trị số) của variable myDB. Vì valuenầy không phải là Object, nhưng nó chứa memory address chỉ đến (point to hayrefer to) Object Database, nên ta gọi nó là Pointer.Lập trình dùng Pointer nói chung rất linh động là hiệu năng trong các ngôn ngữ nhưC, Pascal, C++ ,v.v.. Tuy nhiên, lập trình viên phải nhớ trả lại Operating Systemphần memory mình dùng khi không còn cần nó nữa để Operating System lại allocatecho Object khác. Nếu công việc quản lý dùng lại memory không ổn thỏa thì cónhững mảnh memory nằm lang bang mà Operating Sytem không biết. Lần lầnOperating System sẽ không còn memory dư nữa. Ta gọi hiện tượng ấy là memoryleakage (rỉ). Các ngôn ngữ sau nầy như Java, C# đều không dùng Pointer nữa.Visual Basic không muốn lập trình viên dùng Pointer. Chỉ trong vài trường hợp đặcbiệt VB6 mới lộ ra cho ta thấy thật ra ở trong hậu trường VB6 Runtime dùngPointer, như trong trường hợp nầy.Tương tự như vậy, vì Recordset là một Pointer đến một Object, ta cũng dùng Set khichỉ định một DAO Recordset lấy về từ Method OpenRecordset của databasemyDB. Open recordset Set myRS = myDB.OpenRecordset(Select * from Titles ORDER BY Title)Cái parameter loại String ta dùng cho method OpenRecordset là một Lệnh(Statement) SQL. Nó chỉ định cho database lấy tất cả mọi fields (columns) (Select*) của mỗi record từ Table Titles (from Titles) làm một Recordset và sort các recordstrong Recordset ấy theo alphabetical order của field Title (ORDER BY Title).Nhớ là Recordset nầy cũng giống như property Recordset của một Control Data màta dùng trong bài trước. Bây giờ có Recordset rồi, ta có thể hiển thị chi tiết củarecord đầu tiên nếu Recordset ấy có ít nhất một record. Ta kiểm tra điều ấy dựa vàoproperty RecordCount của Recordset như trong code dưới đây: Private Sub Form_Load() Fetch Folder where this program EXE resides AppFolder = App.Path make sure it ends with a back slash If Right(AppFolder, 1) \ Then AppFolder = AppFolder & \ Open main database Set myDB = OpenDatabase(AppFolder & BIBLIO.MDB) Open recordset Set myRS = myDB.OpenRecordset(Select * from Titles ORDER BY Title) if Recordset is not empty then display the first record If myRS.RecordCount > 0 Then myRS.MoveFirst move to first record Displayrecord display details of current record End If End SubSau khi dùng method MoveFirst của Recordset để position current record ở Recordđầu tiên, ta hiển thị trị số các fields của record bằng cách assign chúng vào cáctextboxes của Form như sau: Private Sub Displayrecord() Assign record fields to the appropriate textboxes With myRS Assign field Title to textbox txtTitle txtTitle.Text = .Fields(Title) txtYearPublished.Text = .Fields([Year Published]) txtISBN.Text = .Fields(ISBN) txtPublisherID.Text = .Fields(PubID) End With End SubĐể ý vì field Year Publshed gồm có hai chữ nên ta phải đặt tên của field ấy giữahai dấu ngoặc vuông ([]). Để tránh bị phiền phức như trong trường hợp nầy, khibạn đặt tên database ...
Tìm kiếm theo từ khóa liên quan:
phần mềm máy tính ngôn ngữ lập trình thủ thuật lập trình Dùng dữ kiện Lập trình với ADOTài liệu có liên quan:
-
Bài giảng Xử lý sự cố phần mềm - Bài 4 Xử lý sự cố sử dụng Internet
14 trang 371 1 0 -
Nhập môn Tin học căn bản: Phần 1
106 trang 362 0 0 -
Giáo trình Lập trình hướng đối tượng: Phần 2
154 trang 313 0 0 -
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 306 0 0 -
Bài thuyết trình Ngôn ngữ lập trình: Hệ điều hành Window Mobile
30 trang 292 0 0 -
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 246 0 0 -
Bài giảng Một số hướng nghiên cứu và ứng dụng - Lê Thanh Hương
13 trang 245 0 0 -
Giáo trình Lập trình cơ bản với C++: Phần 1
77 trang 241 0 0 -
Giáo án Tin học lớp 11 (Trọn bộ cả năm)
125 trang 230 1 0 -
Thủ thuật giúp giải phóng dung lượng ổ cứng
4 trang 222 0 0 -
Bài tập lập trình Windows dùng C# - Bài thực hành
13 trang 204 0 0 -
Thiết kế mạch logic bằng Verilog - HDL
45 trang 193 0 0 -
Bài giảng Nhập môn về lập trình - Chương 1: Giới thiệu về máy tính và lập trình
30 trang 188 0 0 -
Giáo trình Lập trình C căn bản: Phần 1
64 trang 174 0 0 -
Báo cáo thực tập: Quản lý nhân sự & tiền lương
52 trang 160 0 0 -
Hướng dẫn lập trình với Android part 4
5 trang 158 0 0 -
Giáo trình nhập môn lập trình - Phần 22
48 trang 143 0 0 -
LUẬN VĂN: ỨNG DỤNG NGÔN NGỮ LẬP TRÌNH RÀNG BUỘC COMET VÀO BÀI TOÁN LẬP THỜI KHÓA BIỂU
43 trang 141 0 0 -
Giáo trình Lập trình C căn bản - HanoiAptech Computer Education Center
136 trang 141 0 0 -
142 trang 134 0 0