Chương
5 _Phần 5 _Đoạn 1 : Using Execute method
Thời đại mới hiện nay, các thông tin
đều đổi mới một cách nhanh chóng và mau
lẹ. V́ nếu không,
sẽ không bắt kịp thời đại.
Do đó việc cập nhật hóa các tài liệu
mới (c̣n gọi là update Data) trong ứng dụng là
một bộ phận không thể thiếu.
Để làm việc này, các bạn có thể xử
dụng SQL statement hoặc Recordset Object.
Inserting new record : Thêm chi tiết mới vào trong kho nhu liệu. Sau khi các bạn đă hoàn thành User Interface rồi, việc kế tiếp là các bạn viết code cho nó. Thí dụ như trong user interface là 3 textboxes với họ và tên của học sinh cùng với những phụ chú cho học sinh đó, th́ để tŕnh bày các chi tiết đó, trong click event code, các bạn sẽ thấy những hàng như sau : ( Ghi chú : command INSERT INTO có hiệu quả trong SQL language hay SQL SERVER.)
Sub
cmdAddRecord_Click()
' Declare and
instantiate the object variable
Dim cnStateUBookstore As Connection
Dim sSQL As String
Set cnStateUBookstore = New
Connection
' Establish a
connection
With cnStateUBookstore
.Provider
= "SQLOLEDB"
.ConnectionString
= "User ID=sa;" & _
"Data Source=MSERIES1;" & _
"Initial Catalog=StateUBookstore"
.Open
End With
' Build the
SQL command, xử dụng INSERT INTO mệnh lệnh
sSQL = "INSERT INTO
Students(First_Name, Last_Name) " & "VALUES
('Lani', 'Ota')"
' Execute the
SQL command, cho phép tiến hành
cnStateUBookstore.Execute sSQL
End
Sub
Update Record : Đồng thời với Inserting, các bạn phải cất giử lấy chi tiết đó sau khi đă thêm vào. Cho nên việc cập nhật hóa là chuyện tiếp theo(command là UPDATE). Để làm việc này, mời các bạn hăy xem Updating click event sau đây :
Sub
cmdUpdateRecord_Click()
' Declare and
instantiate the object variable
Dim cnStateUBookstore As Connection
Dim sSQL As String
Set cnStateUBookstore = New
Connection
' Establish a connection
With cnStateUBookstore
.Provider
= "SQLOLEDB"
.ConnectionString
= "User ID=sa;" & _
"Data Source=MSERIES1;" & _
"Initial Catalog=StateUBookstore"
.Open
End With
' Build the SQL command, xữ dụng
mệnh lệnh UPDATE, cập nhật hóa tài liệu
sSQL = "UPDATE Students SET
MajorID = 4 WHERE StudentID = 3"
' Execute the SQL command
cnStateUBookstore.Execute sSQL
End
Sub
Delete Record : Kế tiếp nữa là nếu các bạn lở làm sai điều ǵ, th́ phải xóa bỏ đi(command là DELETE FROM). Mời các bạn xem deleting click event sau đây :
Sub
cmdDeleteRecord_Click()
' Declare and instantiate the object
variable
Dim cnStateUBookstore As Connection
Dim sSQL As String
Set cnStateUBookstore = New
Connection
' Establish a connection
With cnStateUBookstore
.Provider
= "SQLOLEDB"
.ConnectionString
= "User ID=sa;" & _
"Data Source=MSERIES1;" & _
"Initial Catalog=StateUBookstore"
.Open
End With
' Build the
SQL command, xử dụng mệnh lệnh DELETE, xóa bỏ chi tiết không muốn
giử
sSQL = "DELETE FROM Books WHERE
BookID = 3"
' Execute the
SQL command, cho phép tiến hành
cnStateUBookstore.Execute sSQL
End
Sub
Chương 5 _Phần 5 _ Đoạn 2 : Using Recordset to add, update and delete a record
Một phương pháp khác dùng để điều hành các chi tiết trong kho giử tài liệu là xử dụng recordset object. Điều khác biệt với execute method là Recordset chỉ có thể thay đổi các chi tiết từng lần một, trong khi execute method th́ có thể thay đổi các chi tiết cùng một lúc và cập nhật hóa một lần một.
Adding a new record : Thêm vào chi tiết mới cho Recordset. Có 2 bước để làm việc này: Tạo thành một record mới để thêm vào và ghi nhớ nó vào trong recordset. Từ chuyên nghiệp trong tiếng Anh nói là first create the new record to be added, then update it. Mời các bạn theo dỏi diển biến quá tŕnh thêm chi tiết vào kho tài liệu bằng cách xử dụng recordset với chúng tôi :
Dim
rsStudents As Recordset
Set
rsStudents = New Recordset
'
open a recordset, xác định cursorType và LockType để
recordset có khả năng tiếp nhận chi tiết mới.
rsStudents.CursorType
= adOpenKeyset
rsStudents.LockType
= adLockOptimistic
rsStudents.Open
"SELECT First_Name, Last_Name FROM Students",
'
add a new record, thêm chi tiết mới vào
recordset bằng AddNew method.
rsStudents.AddNew
' Xử dụng phương pháp Update để bảo quản chi tiết mới vừa thêm vào
rsStudents.Update
Deleting a record : Để xóa bỏ đi một chi tiết trong bản tài liệu, các bạn có thể xử dụng Delete method trong recordset object. Không giống như inserting a new record, các bạn chỉ cần làm một bước mà thôi. Mời các bạn cùng chúng tôi viết code để xóa bỏ đi một chi tiết trong bản tài liệu.
rsStudents.Delete
'Xử
dụng Delete method để xóa bỏ
rsStudents.MoveNext
'Khiến
cho bản tài liệu di chuyển tới chi tiết kế tiếp
If
rsStudents.EOF Then
rsStudents.MoveLast
End
If
Chương 5_ Phần 6 : Using Disconnected Data
Trong phần này, chúng tôi sẽ tŕnh bày cùng các bạn cách tạo thành disconnected recordset Object. Trên mạng lưới vi tính (networking) có 2 phần cơ bản : Server và Client. Nhắc lại là khi chúng ta viết ứng dụng cho nhiều người xử dụng trên hệ thống mạng lưới, chúng ta nên biết là kho nhu liệu phải có khả năng tŕnh bày các chi tiết mà họ yêu cầu, trên Server và Client. Do đó trong trường hợp Server không hoạt động (từ chuyên nghiệp là offline) th́ việc điều chỉnh tài liệu sẽ gặp nhiều trở ngại.
ADO giúp các bạn làm việc này : Khi bạn không có nối liền với Sever, nhưng các bạn vẫn có thể điều chỉnh các chi tiết trong kho nhu liệu. Disconnected recordset object giúp bạn làm việc đó, mặc dù connection object trong ứng dụng của bạn không có online ( live connection). Rồi sau đó, khi sự nối liền được lập lại, tất cả các chi tiết được cập nhật vá cất giử (update and save). Để làm việc này, chuyện đầu tiên là chúng ta phải thành lập bản tài liệu (recordset) ở bên phía Client (client side). Mời các bạn cùng theo dỏi làm sao để có bản tài liệu bên phía Client.
Chương 5 _Phần 6 _Đoạn 1 : Creating a Disconnected Recordset Object
Thành
lập Client-side Recordset. Code cho click event :
Sub
cmdConnect_Click()
' Declare
and instantiate object variables, chỉ rỏ kho nhu liệu và bản tài liệu
nào trong kho
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 với các chi tiết cụ
thể
With cnStateUBookstore
.Provider = "SQLOLEDB"
.ConnectionString = "User ID=sa;"
& _
"Data Source=MSERIES1;" & _
"Initial Catalog=StateUBookstore"
.Open
End With
' Build a
recordset, tạo thành bản tài liệu cho client.
With rsStudents
' Specify the cursor's location
.CursorLocation = adUseClient
.LockType = adLockBatchOptimistic
.Open "SELECT First_Name,
Last_Name FROM Students", _
cnStateUBookstore
End With
End
Sub
Disconnecting
from the Data Source _ Tách rời khỏi Data Source (Tài
liệu mà các bạn đang làm việc với nó)
Set rsStudents.ActiveConnection = Nothing
cnStateUBookstore.Close
Making Offline Changes : Điều chỉnh các chi tiết mà không cần phải nối liền vào bản tài liệu. Chi tiết mới được thêm vào bằng phương pháp AddNew, bỏ đi chi tiết không cần thiết th́ xử dụng Delete method, các chi tiết đă có sẳn vẫn có thể thay đổi được bằng phương pháp Update...Và tất cả những việc làm trên sẽ được cập nhật hóa tức th́ khi ứng dụng của bạn nối liền với Mainframe Database (SQL Server) trở lại.
Ghi
nhớ
: Nếu cùng một chi tiết (same record) mà phải điều
chỉnh bởi nhiều người xử dụng cùng
một lúc, sẽ gây ra sự cố kỷ thuật ( Data
conflict)
Chương 5 _Phần 6 _Đoạn 2 : Persisting a Recordset
Xử dụng Save method để bảo quản tài liệu và các chi tiết trong bản tài liệu cũng được ǵn giử trong kho nhu liệu. Tiến tŕnh này, từ chuyên nghiệp gọi là persisting data. Việc làm này, giúp cho người xử dụng có thể tắt đi ứng dụng và sau đó mở trở lại mà không cần phải nối liền vào SQL Server. Do đó, persisting data rất là hữu ích cho disconnected recordset object, khi mà connection và ứng dụng ở Server đă đóng lại rồi nhưng recordset (bản tài liệu trong kho nhu liệu) vẫn c̣n có thể làm việc được ở phía client side.Code cho việc này viết là adPersistADTG
Trước hết, chúng ta xử dụng save method để đưa tài liệu vào trong máy của người xử dụng ( từ chuyên nghiệp gọi là local computer). Dưới đây là code viết để bảo quản tài liệu trong máy của người xử dụng :
rsStudents.Save
"c:\studentinfo.dat", adPersistADTG
Rồi sau đó khi các bạn nối liền với Server, các tài liệu ở trong local computer sẽ được đưa vào máy chính trên Server. Việc làm này, gọi là giao trả tài liệu ( từ chuyên nghiệp gọi là Retrieving Persisted Data. Xử dụng Open method các bạn có thể làm được việc Retrieving Persisted Data. Dưới đây là code dùng để giao trả tài liệu cho bản tài liệu (recordset)
rsStudents.Open
"c:\studentinfo.dat"
Chương 5 _Phần 6 _Đoạn 3 : RECONNECTING TO A DATA SOURCE
Sau khi các bạn cắt đi
sự nối liền với kho nhu liệu, các bạn có
thể nối trở lại và tất cả những thay
đổi về tài liệu sẽ được cập
nhật hóa. Những điều
kiện để tạo thành một connection (nối
liền) như Data Source Provider... đều phải lập
lại. Bởi v́ trước
đó, các bạn cho phép Connection object bằng Nothing,
cho nên tất cả các điều kiện lập thành
Connection phải được lập lại.
Sau đây chúng tôi tŕnh bày cùng các bạn thao tác
của Reconnecting click event :
Sub
cmdReconnect_Click()
cnStateUBookstore.Open
rsStudents.ActiveConnection
= cnStateUBookstore
End
Sub
Chương 5 _ Phần 6 _ Đoạn 4 : SUBMITTING CHANGES TO A DATA SOURCE
Như chúng ta đă thông qua ở phần trên, khi ứng dụng không có ăn thông với Mainframe Database, chúng ta vẫn có thể điều chỉnh tài liệu được như thường bằng disconnected object. Phía Client có thể làm việc với recordset (bản tài liệu) bao nhiêu lâu cũng được trong khi ứng dụng offline (không thông thương với Data Source).
Sending Batched Changes to the Data Source có nghĩa là cập nhật hóa tài liệu mà phía Client đă điều chỉnh, khi ứng dụng thông thương trở lại với kho nhu liệu. Xử dụng UpdateBatch method th́ ứng dụng của các bạn có thể cập nhật tất cả các thông tin (Data) mà client đă điều chỉnh. Những Data được điều chỉnh ở phía client, từ chuyên nghiệp gọi là Data cached. Sau đây là click event dùng để làm việc cập nhật các Data cached :
Sub
cmdUpdateAll_Click()
rsStudents.UpdateBatch
End Sub
Conflict management issues là những sự cố kỷ thuật có thể xảy ra trong quá tŕnh thông thương giửa client và server. ADO sẽ báo cáo thể loại của sự cố kỹ thuật và các bạn phải viết code để xử lư. V́ có nhiều thể loại sự cố (chẳng hạn như sự trùng hợp khi thay đổi chi tiết trong bản tư liệu) cho nên việc phân loại sự cố ǵ ? là một trong những bước cần thiết khi bạn viết code xử lư trở ngại đó. Mời các bạn đọc thêm “UpdateBatch Method (ADO)” trong platform SDK Help, có nhiều chi tiết về các thể loại sự cố kỹ thuật.
Hủy bỏ mệnh lệnh cập nhật hóa tài liệu ( canceling a Batch Update) : v́ các tài liệu củ sẽ bị thay thế bằng tài liệu mới, cho nên trong ứng dụng bạn nên hỏi người xử dụng một lần trước khi UpdateBatch làm việc. Sau đây là code để làm việc trên
Sub
cmdUpdateAll_Click()
If MsgBox("Submit all
changes?", vbYesNo) = vbYes Then
rsStudents.UpdateBatch
Else
rsStudents.CancelBatch
End If
End
Sub
Xử
dụng Recordset : Nếu không có yêu cầu về multiple
recordsets (cùng một connection nhưng có nhiều recordset) th́
các bạn nên xử dụng Connection Object hoặc là Command
Object sẽ có hiệu quả làm việc nhiều hơn là
xử dụng Recordset Object.
Sorting Records : Các bạn có thể sắp xếp theo thứ tự các chi tiết trong bản tài liệu.
Updating Data : Xử dụng phương pháp AddNew hay Update để thay đổi chi tiết bản Database. Nếu các bạn làm việc với Multiple recordset, th́ xử dụng Execute method trong Command object sẽ tốt hơn
Transactions : Là 2 việc cần phải tiến hành hoàn chỉnh. Đó là giao đi (commit) và trả lại (roll back). Nếu một trong hai việc đó, tiến hành không trọn vẹn sẽ không có transaction. Chẳng hạn như Data bạn đă điều chỉnh rồi cần phải cập nhật, nhưng nếu bạn cập nhật không được v́ một lư do nào đó, th́ bản tài liệu củ, vẫn giử nguyên, không thay đổi.
(...c̣n nữa...mời Quí vị xem trang tiếp theo ...)
|
Vovisoft © 2000. All rights reserved. | ||||
|
Last Updated: 21 Jun 2007 |
||||