Visual Basic Bách Khoa-Chương 5- Tong quát về ActiveX Data
Tham khảo tài liệu 'visual basic bách khoa-chương 5- tong quát về activex data', công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả
Chương 5 _ Phần 1 : Overview of ADO _ Khái niệm
tổng quát về ActiveX Data Object.
ADO được tạo thành như một ứng dụng bao gồm các chi tiết properties, methods,
events giống như bao ứng dụng khác vậy. ADO còn được xử dụng như một component. Và
theo phương pháp viết program mới, việc xử dụng các bộ phận (components) đã cho thấy hiệu
quả rất cao, cho nên ADO đã đóng góp phần lớn trong việc phát triển ứng dụng.
Có rất nhiều sản phẩm về lưu trử hồ sơ (từ chuyên nghiệp bên tiếng Anh gọi là
platform) như C++, Java, SQL... và mỗi loại như vậy đều có cách lưu giử và cung cấp khác
nhau. Nhưng với ADO, các bạn có thể xử dụng component này trong các sản phẩm của họ.
Thí dụ điển hình là như vậy : Ngày xưa bên Âu châu, khi nước này qua nước kia, họ phải đổi
tiền tệ ở nước mà họ đến. Nhưng ngày nay, với đơn vị tiền tệ Euro, người Âu châu có thể xử
dụng ở bất cứ nước nào trong Âu châu. Và với ADO cũng vậy, với ADO component, các bạn
có thể xử dụng trong các sản phẩm sau đây :
• Microsoft Visual Basic
• Microsoft Visual InterDev
• Microsoft Visual C++
• Microsoft Visual J++
• Microsoft Visual FoxPro
• Microsoft VBScript
• Microsoft Visual Basic for Applications
ADO là sự tổng hợp giửa RDO và DAO. Mời Quí Vị đọc lại những chương trước đó,
chúng tôi có nói qua RDO (Remove Data Object) và DAO (Data Access Object). Hình ảnh
dưới đây cho chúng ta thấy sự tổng hợp đó. Chính nhờ sự tổng hợp này, chúng ta mới có thể
xử dụng được ở nhiều platforms.
ActiveX Data Object bao gồm 3 bộ phận chính : Connection object, Command object,
Recordset object. Hình ảnh dưới đây, cho chúng ta thấy sự quan hệ giửa các objects với nhau
và cách làm việc của ActiveX Data object.
Connection Object : là bộ phận quan trọng nhất trong ADO object model. Nó dùng để nối
liền ứng dụng của bạn với các kho nhu liệu như Microsoft Access, Microsoft SQL Server...Hình
ảnh dưới đây diển tả việc làm của connection object trong ActiveX Data Object Model
Command Object : Bộ phận này dùng để trình bày hay giao trả những nhu liệu theo yêu
cầu của người xử dụng hay của ứng dụng. Trong Command Object, chúng ta sẽ nói cho kho
nhu liệu biết chúng ta cần những loại nhu liệu nào ? Và kho nhu liệu sẽ đưa cho chúng ta.
Dưới đây là hình ảnh minh họa mối quan hệ về command object trong ActiveX Data Object.
Recordset object : là một bộ phận trong ActiveX Data Object, có nhiệm vụ giao trả những
hồ sơ tư liệu trong Kho nhu liệu khi command object gọi đến. Với Recordset object, các bạn
có thể sửa đổi hoặc thêm bớt các nhu liệu theo yêu cầu. Dưới đây là hình ảnh cho thấy mối
liên hệ của Recordset object trong ActiveX Data Object.
Ngoài 3 bộ phận chính mà chúng tôi vừa nói qua, ActiveX Data Object còn có 3 bộ
phận phụ khác hổ trợ cho nó là : Errors Collection, Parameters Collection và Fields Collection.
Chính vì ADO hoạt động như một ứng dụng riêng biệt, cho nên 3 bộ phận phụ trên giúp cho
ADO có những khả năng như là xử dụng trên nhiều platforms, tránh nhiều trở ngại và dể dàng
phát triển...
Errors Collection : Khi Connection Object làm việc, Errors Collection sẽ báo cáo cho
ADO biết tình trạng hiện thời của ứng dụng, chẳng hạn như Server on hay off (Server đang
mở hay tắt rồi). Hay là bên Server thiếu những bộ phận cơ bản để được nối liền với ADO...Sau
đây là vài hàng code cơ bản được viết trong Errors Collection dùng để báo cho chúng ta biết
khi nối liền với Server (Data Store, Mainframe, SQL Server...)
Sub StartConnection()
' Declare a connection and error object
Dim cnStateUBookstore As Connection
Dim adoErr As Error
Set cnStateUBookstore = New Connection
' Enable the error trap
On Error Goto StartConnection_Handler
' Establish a connection to the data source
With cnStateUBookstore
.Provider = "SQLOLEDB"
.ConnectionString = "User ID=sa;" & _
"Data Source=MSERIES1;" & _
"Initial Catalog=StateUBookstore"
.Open
End With
' If the connection succeeds, exit the procedure
Exit Sub
StartConnection_Handler:
' If an error occurs, loop through the collection
' There can be more than one error code for a single
' Run time error
For Each adoErr in cnStateUBookstore.Errors
' Show each error description to the user
MsgBox adoErr.Description
Next
End Sub
Parameters Collection : Bộ phận này dùng để đưa những thông tin từ Command object
vào trong kho giử nhu liệu, giúp cho ADO biết được nơi nào trong kho nhu liệu để lấy.
Fields Collection : Bộ phận này giúp Recordset object biết chi tiết nào trong kho nhu liệu
để lấy và trình bày cho người xử dụng.
Chương 5 _Phần 2 _Ðoạn 1 : Introduction to Connection Object
Bộ phận Connection Object trong ứng dụng của bạn dùng để kiểm chứng những chi
tiết về Client information như user name, password khi những người này muốn vào kho nhu
liệu để lấy tài liệu. Ðể làm việc này chúng ta phải thực hiện 4 bước sau đây (có lẻ đã không
còn lạ lùng với các bạn nữa, bởi vì những bước này chúng ta làm rất nhiều lần ở những
chương truớc đó). Tuy nhiên, để ADO làm việc hữu hiệu, chúng ta vẫn phải làm theo các trình
tự sau đây :
1. Ðặt ADO object library vào trong references cho Visual Basic Application
2. Xác định Connection Object
3. Chọn OLE DB Data Provider
4. Giao những chi tiết về sự nối liền cho Connection object kiểm chứng.
Làm sao để đặt ADO object library vào trong references cho VB application ? Theo 2
bước sau đây :
1. Trong Project menu của Visual Basic Application, bấm trên References
2. Trong danh sách những bộ phận bổ xung cho Visual Basic Application, chọn Microsoft
Data Objects 2.0 Library, rồi bấm OK.
Như vậy là chúng ta đã làm xong bước thứ nhất rồi. Bước thứ nhì là xác định Connection
Object. Từ chuyên nghiệp trong tiếng Anh gọi là declare a connection object. Bằng cách viết
code. Chúng ta viết code để xác định Database Name và viết command để connection object
tiếp tục làm việc sau khi đã biết Database Name. Ðây là thí dụ điển hình :
Dim (Database Name) As Connection
Set (Database Name) = New Connection
Bước thứ ba là chọn Data Provider. Vì có nhiều loại Mainframe Database, cho nên chúng ta
phải xác định cho Connection object biết kho nhu liệu mà nó sẽ đến lấy tin tức, nhu liệu là từ
đâu mà cung cấp cho các bạn ? Dưới đây là danh sách những Data Provider mà ADO object
có thể nối liền :
OLE DB Data Provider Description
SQLOLEDB OLE DB provider for Microsoft SQL Server
MSDASQL OLE DB provider for ODBC
Microsoft Jet OLEDB 3.51 OLE DB provider for Microsoft Jet
MSIDXS OLE DB provider for Microsoft Index Server
ADSDSO Object OLE DB provider for Microsoft Active Directory Services
MSDAORA OLE DB provider for Oracle
Chiếu theo OLE DB data provider, Quí vị chỉ cần viết code cho biết provider thuộc thể loại nào
mà ứng dụng của bạn xử dụng thì ADO object sẽ biết chổ để đến lấy tin tức, nhu liệu...mà
cung cấp theo yêu cầu của các bạn. Thí dụ như :
ListofCurrentStock.Provider = “SQLOLEDB” 'OLE DB provider for Microsoft SQL Server
Bước cuối cùng để hoàn tất việc nối liền vào kho nhu liệu là kiểm tra toàn bộ các chi tiết về
provider, userID, password, Data Source, Initial Catalog...Sau đây là những chi tiết mà kho
nhu liệu đòi hỏi trước khi cho phép ADO vào trong kho để lấy tin tức, tài liệu...
Connection Argument Description
UserID Tên của User có trong danh sách
Password Mật mã có giá trị hiệu nghiệm
Data Source Tên của remote Server
Initial Catalog Tên của Database chứa trong Server
Quí vị xử dụng With event để làm công việc trên :
With ListofCurrentStock
.Provider = “SQLOLEDB” ‘OLE DB provider for Microsoft SQL Server
.ConnectionString = “User ID=sa;Password=;”&_
“Data Source = MSERIES1;”&_
“Initial Catalog = ListofCurrentStock”
‘connection argument
End With
Chương 5 _ Phần 2 _ Ðoạn 2 : Connecting to and Disconnecting from a Data Source
Một sự nối liền hoàn chỉnh sẽ giúp cho cả hai bên Client và Server làm việc có hiệu
quả. Mặc dầu ADO sẽ tự động cắt đứt sự nối liền khi người xử dụng tắt đi ứng dụng khi không
dùng nữa, nhưng một ADO hoàn chỉnh vẫn phải có một giai đoạn là đóng sự nối liền lại trong
khi ứng dụng vẫn hoạt động. Vì nhờ đó mà những bô phận khác (objects) vẫn có thể hoàn
thành chức năng của mình. Mời các bạn cùng chúng tôi viết một program đơn giản là connect
và disconnect từ Data Source.
Chương trình đơn giản này bao gồm 3 bộ phận : connection object, command object và
recordset object. Sau khi bổ xung Microsoft Data Objects 2.0 Library vào trong Visual Basic
rồi thì chúng ta đặt 2 command button vào trong Form Visual Basic. Một command tên là
connect và command khác tên là Disconnect. Với 2 command object này chúng ta có thể ra
vào nơi cất giử tài liệu và khóa lại khi không dùng đến.
Ðây là user interface cho chương trình đơn giản này:
Ðây là code cho command connect :
Ðây là code cho command Disconnect :
Chúng ta kiểm tra ứng dụng:
Chương 5 _Phần 2 _ Ðoạn 3 : Using Connection Object Events
Chúng tôi trình bày cùng các bạn những tiết mục mà Connection Object có thể biểu
diển cùng các bạn. Nói cách khác, chúng tôi trình bày cùng các bạn các chức năng chủ yếu
của Connection Object, thì các bạn thấy lợi ích của việc xử dụng ADO nhiều hơn nữa.
Event Description
AbortTransaction Có hiệu lực sau khi RollbackTrans method
được dùng tới.
BeginTransaction Có hiệu lực sau khi BeginTrans method
được dùng tới.
CommitTransaction Có hiệu lực sau khi CommitTrans method
được dùng tới.
ConnectComplete Có hiệu lực khi hoàn thành tiến trình nối
liền...báo cáo trở ngại hay hoàn chỉnh...
Disconnect Có hiệu lực khi ứng dụng cắt đứt sự nối liền.
ExecuteComplete Có hiệu lực khi Execute method được gọi
đến.
InfoMessage Có hiệu lực khi có những thông báo từ OLE
DB hay kho nhu liệu...
WillConnect Có hiệu lực sau khi Open method được
dùng đến.
WillExecute Có hiệu lực khi Execute method được dùng
đến.
Ngoài ra các bạn còn có thể thêm code vào các Event này để phục vụ hữu hiệu hơn
cho ứng dụng của các bạn. Thí dụ như các bạn có thể thêm vào Event một thông tin nói rằng
sự nối liền đã hoàn thành sau đây :
Sub cnStateUBookstore_ConnectComplete (ByVal pError As ADODB.Error,_
adStatus As ADODB.EventStatusEnum, _
ByVal pConnection As ADODB.Connection)
If adStatus = AdStatusOK Then
MsgBox " The Connection has been establised with the Data Source."
End If
End Sub
Chúng tôi sẽ tiếp tục trình bày cùng Quí vị thêm nhiều chi tiết về ADO.