我們Data Process的程式不常會有Table Sorting的動作嗎?以前是一件痛苦的事,我們也可以用憶體的RecordSet來做,這是一個不錯的選擇。
以本例來說,它也開啟了另一個DataBinding的情況,在VB5.0時,DataBinding一定得配合Data控制項來做,而到了VB6.0呢,它的范圍可多了不少,首先DataSource可以設定的物件主要有
1. ADODC,這和傳統的Data控制項是同等的位置,但現在DataSource不但可以設定給DATA控制項(於Design Time),現在也可以設定給ADODC控制項(Design/Run Time皆可)
2. ADO Resultset,這就是本例的做法,而且不僅在這種記憶體Resultset可用,就算真的Binding的Resultset是指向Remote端的實№資料也可以Work,而且,我們在Control項(如TextBox)上面的資料變更,也會反映給Remote端,當然了,要有權限Update才不會有錯。這個功能實在很帥!如此一來就不用ADODC也可做到DataBinding
3.Data Environment:這個工具實在很強,它是圖形化的一個介面,設定好之後,在程式中便可以把DataSource指定成Data Environment物件,而一個Data Environment可以有多個Command物件於其上(我想Data Environment物件本身有ado Connection物件的包裝),所以設定DataMember 將指定使用哪一個Command 物件。而DataFiled就很明顯了,詳細的做法我不在這里說明,這Data Environment很棒。
4.自訂的Data Aware的物件類別,這又是另一個主題,查一下VB6的help吧。
以下程式 Textbox * 2 , CommandBox * 2
Private rs As New ADODB.Recordset 資料錄集的變數
Private Sub Command1_Click()
rs.MoveNext
End Sub
Private Sub CreateRecordset()
With rs
建立rs的Table結構
.Fields.Append "ID", adInteger
.Fields.Append "Item", adVarChar, 255
.CursorType = adOpenStatic
.LockType = adLockOptimistic
.Open 不要連接物件。
End With
Dim i As Integer
新增資料到Resultset中 rs.AddNew
rs!id = i
rs!Item = "thing " & i
rs.Update
Next i
rs.MoveFirst
rs.Sort = "Item" 如果想要對Recordset做Sorting還可以用Sort來做
End Sub
Private Sub Command2_Click()
rs.MovePrevious
End Sub
Private Sub Form_Load()
Command1.Caption = "MoveNext"
Command2.Caption = "MovePrevious"
Call CreateRecordset
定義Text1 為DataBinding,資料來源是rs, 顯示欄位是id
Set Text1.DataSource = rs
Text1.DataField = "id"
定義Text1 為DataBinding,資料來源是rs, 顯示欄位是Item
Set Text2.DataSource = rs
Text2.DataField = "Item"
End Sub
Private Sub Form_Unload(Cancel As Integer)
rs.Close
End Sub