Tài liệu Visual Basic 6- Chương 16- Lập trình với ADO-Phần 1 pdf

12 496 0
Tài liệu Visual Basic 6- Chương 16- Lập trình với ADO-Phần 1 pdf

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Chương Mười Sáu - Lập trình với ADO (phần I) Control Data ADO Visual Basic cho ta lựa chọn kỹ thuật lập trình với database, dùng DAO hai trước, dùng ADO (ActiveX Data Objects) Sự khác biệt ADO DAO ADO cho phép ta làm việc với loại nguồn kiện (data sources), không thiết phải Access database hay ODBC Nguồn kiện danh sách địa Email, hay file text string, hàng record gồm fields ngăn cách dấu phẩy (comma separated values) Nếu DAO ta dùng thẳng tên MSAccess Database ADO cho ta nối với (connect) database qua Connection cách định Connection String Trong Connection String có Database Provider (thí dụ Jet, ISAM, Oracle, SQLServer v.v.), tên Database, UserName/Password để logon database v.v Sau ta lấy (extract) recordsets, cập nhật hóa records cách dùng lệnh SQL tables hay dùng stored procedures bên database Bình thường, ta khởi động project VB6 mới, Control Data ADO khơng có sẵn IDE Muốn có nó, bạn dùng Menu Command Project | Components , chọn Microsoft ADO Data Control 6.0 (OLEDB) từ giao diện Components đây: Bạn bắt đầu dự án VB6 mới, cho tên ADODataControl cách click tên project Project Explorer bên phải edit property Name Properties Window Sửa tên form thành frmADO, đánh câu ADO DataControl Demo vào Caption DoubleClick lên Icon Control Data ADO Toolbox Một Control Data ADO tên Adodc1 Form Muốn cho nằm bên Form, giống StatusBar, set property Align Properties Window thành - vbAlignBottom Click bên phải hàng property (Custom), kế click lên nút browse có ba chấm để giao thoại Property Pages Trong giao thoại nầy, Tab General chọn Radio (Option) Button Use Connection String click nút Build Trong giao thoại Data Link Properties, Tab Provider, chọn Microsoft Jet 3.51 OLE DB Provider, click nút Next >> hay Tab Connection Ở chỗ Select or enter a database name ta chọn E:\Program Files\Microsoft Visual Studio\VB98\BIBLIO.MDB, computer bạn file nằm disk C hay D Sau đó, bạn click nút Test Connection phía để thử xem connection có thiết lập tốt khơng Lập connection xong rồi, ta định muốn lấy làm Recordset cách click property Recordsource Adodc1 Trong giao diện Property Pages chọn 2-adCmdTable làm Command Type, kế mở Combo box cho Table or Stored Procedure Name để chọn table Titles Tùy theo cách ta dùng Recordset ADO, có ba loại gọi Cursor Type Cursor chẳng qua tên khác Recordset: • Static Cursor: Static Cursor cho bạn static copy (bản cứng ngắc) records Trong lúc bạn dùng Static Cursor, có khác sửa đổi hay thêm, bớt vào recordset bạn khơng thấy • Keyset Cursor: Keysey Cursor Static Cursor chỗ lúc bạn dùng nó, có sửa đổi record bạn biết Nếu delete record nào, bạn khơng thấy Tuy nhiên bạn khơng biết có thêm record vào recordset • Dynamic Cursor: Như chữ sống động (dynamic) hàm ý, lúc bạn dùng Dynamic Cursor, có khác sửa đổi hay thêm, bớt vào recordset bạn thấy hết Bạn chọn trị số 2-adOpenDynamic cho property Cursor Type Adodc1: Bây bạn đặt lên Form labels với captions: Title, Year Published, ISBN Publisher ID Kế cho thêm textboxes tương ứng đặt tên chúng txtTitle, txtYearPublished, txtISBN txtPublisherID Để thực Data Binding, bạn chọn textbox txtYearPublished (năm xuất bản), set property Datasource Properties Window thành Adodc1 Khi click lên property DataField txtYearPublished mở ComboBox bạn thấy liệt kê tên Fields table Titles Đó Adodc1 coi trung gian lấy table Titles từ database Ở ta chọn cột Year Published Lập lại công tác nầy cho textboxes kia, chọn cột Title (Tiêu đề), ISBN (số lý lịch thư viện quốc tế), PubID (số lý lịch nhà xuất bản) làm DataField cho chúng Đến đây, chưa viết hàng code nào, bạn chạy chương trình hiển thị dười đây: Bạn tải chương trình dùng Control Data ADO nầy từ ADODatacontrol.zip Data Form Wizard Để giúp lập trình viên thiết kế data forms nhanh hơn, VB6 cho ta Data Form Wizard để generate (phát sinh) form có hỗ trợ Edit, Add Delete records Bây bạn khởi động standard project VB6 mới, tên ADOClass copy MS Access file BIBLIO.MDB, tức database, vào folder dự án nầy Muốn dùng Data Form Wizard, trước hết ta phải thêm vào mơi trường phát triển (IDE) VB6 Bạn dùng IDE Menu Command Add-Ins | Add-In Manager Chọn VB6 Data Form Wizard giao thoại, click Checkbox Loaded/Unloaded để chữ Loaded bên phải hàng "VB6 Data Form Wizard" hình đây: Nếu bạn muốn lần khởi động VB6 IDE có sẵn Data Form Wizard menu Add-Ins option Loaded, bạn click thêm check box Load on Startup Một Add-In menu Item mà ta thêm vào chương trình ứng dụng có sẵn Thường thường, người ta dùng Add-Ins để thêm chức cho chương trình, làm chương trình có sẵn chức từ đầu Bạn khởi động Data Form Wizard từ IDE Menu Command Add-Ins | Data Form Wizard Khi trang Data Form Wizard - Introduction ra, click Next Trong trang kế chọn Access làm Database Type Trong trang Database, click Browse để chọn MS Access database file Ở ta chọn file BIBLIO.MDB từ folder chương trình nầy Đoạn click Next Trong trang Form, ta chọn Single Record cho Form Layout Class cho Binding Type Đoạn click Next Nếu ta chọn ADO Data Control kết giống giống ta dùng Control Data DAO trước Trong trang Record Source ta chọn table Titles Listbox Available Fields hiển thị fields table Titles Sau chọn field cách click lên tên field Listbox, bạn click hình tam giác qua phải tên field dời qua nằm Listbox Selected Fields bên phải Nếu bạn click hình hai tam giác qua bên phải tất fields lại bên trái dời qua bên phải Bạn đặt vị trí selected fields cách click lên tên field click hình mũi tên lên hay xuống để di chuyển field lên hay xuống danh sách fields Ngoài ra, bạn chọn Title làm Column to Sort By Combobox để records Recordset xếp theo thứ tự ABC (alphabetical order) field Tiêu đề (Title) Trong trang Control Selection, ta để y nguyên để có đủ buttons Bạn click Next Khi Data Form Wizard chấm dứt, generate form frmADODataForm Bạn remove Form1 dùng Menu Command Project | ADODataControl Properties để đổi Startup Object thành frmADODataForm Thế tạm xong chương trình để Edit records table Titles Chúng ta quan sát Form phần code Data Form Wizard generated Trong frmADODataForm, textboxes làm thành array tên txtFields Mọi textbox có property DataField định sẵn tên field table Titles Thí dụ txtFields(2) có DataField ISBN Form khơng dùng Control Data ADO dùng Object class clsTitles Phần Initialisation class clsTitles Open Connection lấy Dataset có tên DataMember Primary sau: Private Sub Class_Initialize() Dim db As Connection Set db = New Connection db.CursorLocation = adUseClient ' Open connection db.Open "PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=E:\Websites\Vovisoft\VisualBasic\ADOForm\BIBLIO.MDB;" ' Instantiate ADO recordset Set adoPrimaryRS = New Recordset ' Retrieve data for Recordset adoPrimaryRS.Open "select Title,[Year Published],ISBN,Description,Notes,PubID from Titles Order by Title", _ db, adOpenStatic, adLockOptimistic ' Define the only data member, named Primary DataMembers.Add "Primary" End Sub Về vị trí database, bạn khơng muốn chết cứng folder dùng App.Path để xác định mối liên hệ vị trí database folder chương trình chạy, thí dụ như: db.Open "PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=" & App.Path & "\BIBLIO.MDB;" Trong Sub Form_Load, ta dùng For Each để qua hết textboxes array txtFields Vì property Datasource textbox Object nên ta dùng keyword Set để point đến Object PrimaryCLS Đồng thời ta phải định tên DataMember textbox Primary: Private Sub Form_Load() ' Instantiate an Object of class clsTitles Set PrimaryCLS = New clsTitles Dim oText As TextBox ' Iterate through each textbox in the array txtFields 'Bind the text boxes to the data source, i.e PrimaryCLS For Each oText In Me.txtFields oText.DataMember = "Primary" ' Use Set because property Datasource is an Object Set oText.DataSource = PrimaryCLS Next End Sub Khi di chuyển từ record nầy đến record khác chấm dứt, Recordset có raise Event MoveComplete Event handled (giải quyết) class clsTitles cách lại raise Event MoveComplete để handled Form Muốn handle Event clsTitles ta phải declare recordset adoPrimaryRS với WithEvents: Dim WithEvents adoPrimaryRS As Recordset Private Sub adoPrimaryRS_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, _ ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset) ' Raise event to be handled by main form RaiseEvent MoveComplete End Sub Và Form ta phải declare (object clsTitles) PrimaryCLS với WithEvents: Private WithEvents PrimaryCLS As clsTitles Trong Form, Event MoveComplete làm hiển thị vị trí tuyệt đối (Absolute Position) record code đây: Private Sub PrimaryCLS_MoveComplete() 'This will display the current record position for this recordset lblStatus.Caption = "Record: " & CStr(PrimaryCLS.AbsolutePosition) End Sub Khi user clicks Refresh, textboxes hiển thị lại với chi tiết record từ recordset, nhỡ có khác sửa đổi record Method Requery clsTitles lại gọi method Requery Recordset sau: Private Sub cmdRefresh_Click() 'This is only needed for multi user applications On Error GoTo RefreshErr ' fetch the latest copy of Recordset PrimaryCLS.Requery Exit Sub RefreshErr: MsgBox Err.Description End Sub 'In Class clsTitles Public Sub Requery() ' Fetch latest copy of record adoPrimaryRS.Requery DataMemberChanged "Primary" End Sub Bạn tải chương trình nầy từ ADOClass.zip ... chưa viết hàng code nào, bạn chạy chương trình hiển thị dười đây: Bạn tải chương trình dùng Control Data ADO nầy từ ADODatacontrol.zip Data Form Wizard Để giúp lập trình viên thiết kế data forms... Startup Một Add-In menu Item mà ta thêm vào chương trình ứng dụng có sẵn Thường thường, người ta dùng Add-Ins để thêm chức cho chương trình, làm chương trình có sẵn chức từ đầu Bạn khởi động Data... Connection phía để thử xem connection có thiết lập tốt khơng Lập connection xong rồi, ta định muốn lấy làm Recordset cách click property Recordsource Adodc1 Trong giao diện Property Pages chọn 2-adCmdTable

Ngày đăng: 16/01/2014, 20:20

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan