Chương 5 _ Phần 2 _ Ðoạn 4 : Using Multiple Connection on a Data Source.

Nhìn vào hình ảnh trên chúng ta thấy rằng chúng ta có thể mở nhiều hơn 1 connection (nối liền) vào nơi cất giử nhu liệu. Tuy nhiên, chúng ta không nên mở nhiều connection trong cùng một control. Lý do là Server sẽ phải định hướng từng connection một, khi connection đi vào kho nhu liệu. Do đó, trong ứng dụng của các bạn, chỉ khi nào các bạn cần phải làm 2 transactions (trao đổi thông tin) riêng biệt trong cùng một ADO control, thì hãy xử dụng multiple connection mà thôi.
Chương 5 _Phần 2_ Ðoạn 5 : Connecting to Multiple Data Source
Nếu ứng dụng của bạn cần phải lấy nhu liệu từ 2 nơi cất giử nhu liệu riêng biệt, các bạn cần phải xử dụng 2 connection object riêng biệt. Thí dụ như một connection object nối vào SQL Server và một connection object nối vào MS Access chẳng hạn. Hình ảnh dưới đây, cho thấy mối quan hệ đó.
Một ADO Command object dùng để đáp ứng yêu cầu cho người xử dụng khi họ muốn biết những tài liệu nào cất giử trong kho nhu liệu. Do đó, Command object có mối liên hệ vô cùng mật thiết giửa Data Source và connection object. Như chúng ta đã biết ở phần trước đó, xử dụng command object, chúng ta không cần phải nối liền vào kho nhu liệu, vì connection object đã làm việc này.
Chúng tôi trình bày cùng các bạn các đặt
tính của ADO Command object (Command Object Properties) sau đây :
|
Properties |
Description |
ActiveConnection |
Ðáp
ứng yêu cầu nối liền cho bộ phận. |
|
CommandText |
Là
SQL command, tên của stored procedure (tiến trình gìn
giử nhu liệu), tên của danh sách một tài
liệu (table name)...sẽ được xử
dụng bởi bộ phận. |
|
CommandType |
Xuất
hiện khi CommandText property là một SQL command, stored
procedure hay là table name. |
|
Prepared |
Xuất
hiện ngay cả khi SQL command là một store procedure
tạm thời. |
|
State |
Xuất
hiện ngay cả khi command mở ra, đóng lại hay
đang xử dụng. |
Chúng tôi sẽ trình bày cùng các bạn Command Object Methods, bản chi tiết sau đây cho biết việc làm của các Command Object methods
|
Method |
Description |
|
Cancel |
Hủy
bỏ đi Command mà ứng dụng đang xử
dụng |
|
CreateParameter |
Hình
thành Parameter(một nơi để dể dàng cho
việc cất giử hay tìm kiếm nhu liệu) |
|
Execute |
Tiến
hành SQL command |
Taọ
thành Command từ Connection object : Mặc dầu là trong
command object, chúng ta không cần phải tạo thành
Connection object (bộ phận nối liền), nhưng để
việc làm có nhiều hiệu quả hơn, chúng ta có
thể tạo thành Command object trong khi tiến hành Connection
object. Bởi vì khi mà
command object được tạo thành rồi thì chúng ta có
thể làm một yêu cầu như tìm kiếm tài liệu
trong Database ngay. Thí dụ
sau đây là code dùng để tạo thành connection và
command object cùng một lúc khi lên giá sách cùng một lúc
trong danh sách giử ở Database.
Dim
comPriceUpdate As Command
Set
comPriceUpdate = New Command
With
comPriceUpdate
' An existing Connection Object is referenced
.ActiveConnection = cnStateUBookstore
.CommandText = "UPDATE Books SET Price = Price * 1.1"
' call the Execute method to update the prices
.Execute
End
With
Tạo thành Command độc lập : chúng tôi sẽ trình bày cùng
các bạn một Command Object có thể nối liền vào
kho nhu liệu mà không cần thông qua Connection object.
Bởi vì ADO là một trong những COM (component object
model) cho nên các bộ phận trong nó, cũng có tính
chất độc lập. Theo
2 bước sau đây, các bạn sẽ có một
bộ phận mệnh lệnh độc lập:
Trong
ActiveConnection property của command object, thêm vào chi
tiết nơi giử nhu liệu và các chi tiết
cần thiết khác có liên quan đến việc
nối liền vào kho nhu liệu.
Với
Execute method, nó sẽ làm việc nối liền cho các
bạn. Tuy nhiên, nếu các bạn xử dụng phương
pháp này thì Connection object sẽ vô hiệu lực trong
Visual Basic code.
Sau đây là code điển hình dùng để tăng thêm
10% giá mua sách khi bộ phận mệnh lệnh được
tiến hành:
Dim
comPriceUpdate As Command
Set
comPriceUpdate = New Command
With
comPriceUpdate
' No connection object is used
.ActiveConnection = "Provider=SQLOLEDB;" & _
"User ID=sa;" & _
"Data Source=MSERIES1;" & _
"Initial Catalog=StateUBookstore"
.CommandText = "UPDATE Books SET Price = Price * 1.1"
' call the Execute method to update the prices
.Execute
End
With
Chương 5 _ Phần 3_ Ðoạn 2 : Các đặc tính của Recordset Object
Recordset object giúp ứng dụng của các bạn giao trả cho người xử dụng những tài liệu mà họ muốn tìm từ Data Mainframe như MsAccess, Oracle, SQL Server...Từ Recordset object, chúng ta có thể điều chỉnh các tài liệu đó như thêm vào, bớt đi hay xoá bỏ...Sau đây, chúng tôi trình bày cùng các bạn, các tính chất cơ bản của Recordset Object (Properties)
|
Property |
Description |
|
ActiveCommand |
Làm
theo mệnh lệnh của Command Object |
|
ActiveConnection |
Làm
theo mệnh lệnh của Connection Object |
|
CursorLocation |
Vị
trí của Cursor (nơi mà khi bạn bấm nút Enter thì
mệnh lệnh được tiến hành).
Có sẳn trong bộ phận là adUseServer |
|
CursorType |
Thể
loại của Cursor. Có
sẳn trong bộ phận là adOpenForward |
|
LockType |
Cách
xử lý về nhu liệu.
Có sẳn trong bộ phận là adLockReadOnly |
|
MaxRecords |
Số
lượng tối đa của tài liệu được
giao trả khi gọi đến. |
|
PersistFormat |
Xác
định hình thức bảo quản nhu liệu như
thế nào, khi Save method được gọi đến
? |
|
RecordCount |
Có
bao nhiêu tài liệu được xử dụng. |
|
Save |
Bảo
quản tài liệu. |
Recordset Object methods : Bản Recordset Object dưới đây là những methods thông thường được xử dụng trong bộ phận recordset.
|
Method |
Description |
|
Open |
Tiến
hành SQL command và mở Cursor |
|
Close |
Ðóng
Recordset lại |
|
Requery |
Tiến
hành SQL command và mở recordset thêm lần nữa. |
|
Resync |
Cập
nhật hóa recordset |
|
Save |
Ghi
nhớ tài liệu và giử gìn nó. |
Xử dụng Connection
Object và Command Object để tạo thành
Recordset Object : Mở Connection object, sau đó mở Command
Object. Từ Command
Object, dùng Execute method để tạo thành Recordset.
Sau đây là thí dụ điển hình làm sao để tạo thành một Recordset :
'
Instantiate the variables xác định các mối liên hệ
Set cnStateUBookstore = New
Connection
Set comPriceUpdate = New Command
Set rsStudents = New Recordset
' Establish a
connection Tiến hành sự nối liền
With cnStateUBookstore
.Provider
= "SQLOLEDB"
.ConnectionString
= "User ID=sa;" & _
"Data Source=MSERIES1;" & _
"Initial Catalog=StateUBookstore"
.Open
End With
' Create a Command object Tạo
thành bộ phận mệnh lệnh
With comPriceUpdate
.ActiveConnection
= cnStateUBookstore
.CommandText
= "SELECT StudentID FROM Students"
End With
' Build the recordset Tạo thành
nhóm tài liệu
Set rsStudents =
comPriceUpdate.Execute
End
Sub
Các bạn có
thể tạo thành một Recordset object từ Connection
Object bằng cách xử dụng Open method trong
Connection Object. Sau đây là
thí dụ làm sao để tạo thành Recordset Object từ
Connection Object :
Sub
cmdOpenRecordset_Click()
' Declare and
instantiate the object variables
Dim cnStateUBookstore As Connection
Dim rsStudents As Recordset
Set cnStateUBookstore = New
Connection
Set rsStudents = New Recordset
' Establish a
connection
With cnStateUBookstore
.Provider
= "SQLOLEDB"
.ConnectionString
= "User ID=sa;" & _
"Data Source=MSERIES1;" & _
"Initial Catalog=StateUBookstore"
.Open
End With
' Open a
recordset using the Connection object variable
rsStudents.Open "SELECT
StudentID FROM Students", cnStateUBookstore
End
Sub
Ðồng thời, các bạn cũng có thể tạo thành một Recordset bằng cách xử dụng Execute method trong Connection object. Tuy nhiên, cách làm việc của Execute method có phần khác với Open method, do đó, record set tạo thành từ Execute method bị hạn chế nhiều so với Open method. Sau đây là thí dụ điển hình làm sao để tạo thành Recordset object từ Execute method.
Sub
cmdConnect_Click()
' Declare and
instantiate the object variables_Xác định mối quan hệ giửa các bộ
phận
Dim cnStateUBookstore As Connection
Dim rsStudents As Recordset
Set cnStateUBookstore = New
Connection
Set rsStudents = New Recordset
' Establish a
connection_ Tiến hành sự nối liền
With cnStateUBookstore
.Provider
= "SQLOLEDB"
.ConnectionString
= "User ID=sa;" & _
"Data Source=MSERIES1;" & _
"Initial Catalog=StateUBookstore"
.Open
End With
' Open a recordset using the Execute
method_ Xử dụng Execute method để tạo thành Recordset
Set rsStudents =
cnStateUBookstore.Execute("SELECT StudentID FROM Students")
End Sub
Cách tạo thành Recordset độc lập : Bạn có
thể thành lập một Recordset độc lập mà
không cần phải thông qua Connection Object.
Tuy nhiên, khi đến lượt Open method làm
việc, việc làm này không làm bên trong Visual Basic mà
phải làm từ bên ngoài ADO object.
Sau đây là thí dụ về Recordset độc
lập (còn gọi là Stand-Alone Recordset) :
Dim
rsStudents As Recordset
Set
rsStudents = New Recordset
‘
Sự nối liền được tiến hành tiếp
theo đó
rsStudents.Open
"SELECT StudentID FROM Students", _
"Provider=SQLOLEDB;"
& _
"User
ID=sa;" & _
Chương 5 _ Phần 3 _ Ðoạn 3 : Trình bày các tài liệu cho người xử dụng
Có 2 cách để trình bày tài liệu và dữ kiện cho người xử dụng. Thứ nhất là đặt content (những gì chứa đựng) từ recordset vào trong một control nào đó, chẳng hạn như textbox hoặc label... Thứ nhì là nối trực tiếp các controls thẳng vào trong recordset.
Bạn cần phải sắp đặt chi tiết nào trong recordset (field of recordset) để trình bày cùng người xử dụng khi họ yêu cầu. Công việc này từ chuyên nghiệp trong tiếng Anh gọi là reference, you must reference the fields of the recordset. Sau đây là thí dụ làm sao để trình bày chi tiết từ trong record set ra một control ở ngoài ứng dụng.
'
most efficient
txtFirstName.Text
= rsStudents!First_Name
'
explicit, but less efficient
Sắp chổ cho control : Sau khi recordset được tạo thành rồi, các bạn có thể sắp chổ cho control trong ứng dụng (Textbox, Label...) trình bày chi tiết nào (fields) trong recordset. Thí dụ như ứng dụng của bạn có 2 Textboxes, một dùng để trình bày tên của học sinh và một dùng để trình bày họ của học sinh. Các bạn có thể sắp chổ cho nó bằng code sau đây ( Từ chuyên nghiệp gọi là populating controls)
Sub
FillControls()
txtFirstName.Text =
rsStudents!First_Name
txtLastName.Text =
rsStudents!Last_Name
End
Sub
Nối trực tiếp vào bộ phận recordset : các chi tiết trong recordset sẽ được trình bày mỗi khi ứng dụng được tiến hành. Từ chuyên nghiệp gọi là binding controls to a recordset. Binding và Connection khác nhau ở chổ nào hả các bạn ?. Bởi vì chúng cùng một công việv là nối liền ? Khác nhau ở chổ bạn phải làm một Connection trước khi bạn có thể làm việc binding. Cũng cùng một việc là trình bày tên họ của học sinh, nhưng với cách binding controls (Textbox) vào Recordset giúp bạn sắp chổ dể dàng hơn. Sau đây là thí dụ :
Set
txtFirstName.DataSource = rsStudents
txtFirstName.DataField
= "First_Name"
Set
txtLastName.DataSource = rsStudents
Chương 5 _ Phần 3 _ Ðoạn 4 : Trình bày các chi tiết trong recordset cho người xử dụng
Recorset Navigation Properties : Trong ADO object, chỉ có Recordset object là có thể lèo lái, hướng dẩn các chi tiết trong recordset mà trình bày cho người xử dụng xem. Từ chuyên nghiệp trong tiếng Anh là navigating through a recordset. Sau đây là bản tính chất của recordset
|
Property |
Description |
|
AbsolutePage |
Xác định hay cho trở lại chính xác trang tài liệu trong Database nơi mà recordset giử. |
|
AbsolutePosition |
Xác định hay trở lại chính xác nơi mà chi tiết trong recordset thường xử dụng nhất. |
|
BOF |
Chi tiết đầu tiên trong recordset được xử dụng tới. |
|
Bookmark |
Các chi tiết thường được xử dụng nhiều nhất. |
|
EOF |
Chi tiết sau cùng trong recordset được xử dụng tới. |
Recordset
Navigation Methods : Bằng phương pháp di chuyển, các bạn có thể
trình bày từng chi tiết một trong bà record set cho người xử dụng
xem thấy. Sau đây là bản các phương pháp có thể xử dụng
trong recordset object
|
Method |
Description |
|
Move |
Di
chuyển |
|
MoveFirst |
Dời
vào chi tiết đầu tiên |
|
MoveLast |
Dời
vào chi tiết cuối cùng |
|
MoveNext |
Dời
vào chi tiết kế tiếp |
|
MovePrevious |
Dời
vào chi tiết ở đằng sau chi tiết hiện tại. |
Sau đây là các thí dụ về click event cho phương pháp di chuyển trong recordset object
Sub
cmdFirst_click()
rsStudents.MoveFirst
End
Sub
Sub
cmdLast_Click()
rsStudents.MoveLast
End
Sub
Sub
cmdPrevious_Click()
rsStudents.MovePrevious
' Check to see
if tried to move prior to the first record
If rsStudents.BOF then
' Moved
prior to the first record
' Set the
user back to the first
rsStudents.MoveFirst
End If
End
Sub
Sub
cmdNext_Click()
rsStudents.MoveNext
' Check to see
if tried to move beyond the last record
If rsStudents.EOF then
' Moved beyond the
last record
' Set the
user back to the last
rsStudents.MoveLast
End If
End
Sub
Chương 5 _ Phần 4 : Sorting , Filtering and Searching Data
Các bạn có thể sắp xếp theo thứ tự ABC những chi tiết trong tài liệu mà recordset gìn giử. Lợi ích của nó là nếu ứng dụng được xử dụng trên network, các bạn không cần phải tạo thành một lần nữa, recordset. Recordset properties có làm sẳn cho các bạn việc sort ( sắp xếp theo thứ tự) từ ABC là ASC và ngược lại là DESC. Ðây là thí dụ về Command Sort :

Ðể làm mất khả năng Sort bạn chỉ cần viết hàng command này : rsStudents ( Tên của recordset). Sort = " " như trong Command Sort ở trên.
Chọn lọc các chi tiết trong Recordset : Recordset có một đặc tính là các bạn có thể lựa chọn chi tiết nào để trình bày theo ý của người xử dụng mà không cần phải mang hết thảy các tài liệu ra. Ðó là Filter property. Lợi ích của đặc tính này là các bạn có thể tiết kiệm được nhiều memory trong memory pool khi trình bày các Data cho người xử dụng xem. Thí dụ như trong Recordset Student, bạn chỉ muốn trình bày những học sinh nào có balance trên $1000 mà thội, thì viết hàng code này :
rsStudents.Filter = "AccountBalance > 1000"
Khi các bạn không muốn xử dụng Filter property nữa thì viết hàng code này :
rsStudents.Filter = adFilterNone
Searching Data : Khi các bạn muốn tìm tài liệu mà mình muốn đọc trong recordset, các bạn sẽ phải xử dụng Find method. Find method giúp các bạn tìm tài liệu chính xác hơn, thí dụ như tìm học sinh nào có họ là Tran chẳng hạn, hãy xem code sau đây : rsStudents.Find "Last_Name = 'Tran'" . Ðây là danh sách những việc mà Find method có thể làm được :
|
Parameter |
Description |
|
Criteria |
Ðịnh
hướng những chi tiết cần phải trình bày. |
|
SkipRows |
Bỏ
qua những hàng không cần thiết |
|
Direction |
Ðịnh
hướng lối tìm, đi tới hay đi lui (adSearchForward
or adSearchBackward). |
|
Start |
Xác
định điểm khởi đầu tìm tài
liệu. |
Còn đây là danh sách những chi tiết mà khi bạn xử dụng Find method, nó sẽ giúp các bạn tìm các tài liệu chính xác hơn :
|
Clause |
Description |
|
FieldName |
Name
of the field being searched |
|
Operator |
=,
<, >, "like" |
|
Value |
Date,
String, Number |
(...còn nữa...mời Quí vị xem trang kế tiếp...)
|
Vovisoft © 2000. All rights reserved. | ||||
|
Last Updated: 21 Jun 2007 |
||||