當前位置:編程學習大全網 - 編程語言 - 關於VB中的DataEnvironment這個控件

關於VB中的DataEnvironment這個控件

Data 控件

使用三種類型的 Recordset 對象中的任何壹種來提供對存儲在數據庫中數據的訪問。Data 控件允許從壹個記錄移動到另壹個記錄,並顯示和操縱來自被連結的控件的記錄的數據。如果沒有 Data 控件或等價的數據源控件,比如 RemoteData 控件,窗體上的被連結數據覺察控件不能自動訪問數據。

語法

Data

說明

可以使用 Data 控件來執行大部分數據訪問操作,而根本不用編寫代碼。與 Data 控件相連結的數據覺察控件自動顯示來自當前記錄的壹個或多個字段的數據,或者,在某些情況下,顯示來自當前記錄旁邊的壹個記錄集合中的壹個或者多個字段中的數據。Data 控件在當前記錄上執行所有操作。

如果 Data 控件被指示移動到壹個不同的記錄,則所有被連結的控件自動把當前記錄的任何改變傳遞給 Data 控件以保存在數據庫中。Data 控件移動到被指定的記錄,同時把當前記錄中的數據傳回被連結的控件,並在那裏顯示。

Data 控件自動處理壹些意外事件包括空記錄集,添加新記錄,編輯和更新現有記錄,處理某些類型的錯誤。然而,在更復雜的應用程序裏,則需要捕獲 Data 控件不能處理的某些錯誤類型。例如,當 Microsoft Jet 數據庫引擎訪問數據文件有問題、沒有權限或不能按照代碼執行查詢時,會導致可捕獲的錯誤。如果錯誤發生在應用過程開始之前或由於某些內部錯誤,Error 事件被觸發。

被連結的控件

當與 Data 控件相連結時,DataList、 DataCombo、 DataGrid,和 MSHFlexGrid 控件都能管理記錄集合。所有這些控件都允許壹次顯示或操作幾個記錄。

內部的 Picture、Label、TextBox、CheckBox、Image、OLE、ListBox 和 ComboBox 控件也是數據覺察的,能和由 Data 控件管理的 Recordset 的壹個字段相連結。其它的數據覺察控件,如 MaskedEdit 和 RichTextBox 控件,可以在專業版和企業版中得到,也可以由第三方提供。

操作

壹旦應用程序開始,Visual Basic 就用 Data 控件屬性打開選定的數據庫,創建 Database 對象和創建 Recorset 對象。Data 控件的 Database 和 Recordset 屬性引用新創建的,可獨立於 Data 控件操作的 Database 和 Recorset 對象— 帶有或沒有被連結的控件。Data 控件在其所在窗體的初始化 Form_Load 事件之前被初始化。在初始化階段中發生任何錯誤都將導致壹個不可捕獲的錯誤。

當 Visual Basic 用 Jet Database 引擎創建壹個 Recordset 時,其它的 Visual Basic 操作或事件只能等到該操作完成後才能發生。然而,在 Recordset 創建過程中允許其它基於 Windows 的應用程序繼續執行。當 Jet 引擎創建 Recordset 時,按 CTRL+BREAK 鍵,操作將被終止,導致壹個可捕獲的錯誤,而 Data 控件的 Recordset 屬性被設置成 Nothing。在設計時內,第二次按 CTRL+BREAK 鍵會使 Visual Basic 顯示 Debug 窗口。

當使用 Data 控件創建 Recordset 對象或用代碼創建 Recordset 對象並把它賦值給 Data 控件時,Microsoft Jet 數據庫引擎會自動移居到 Recordset 對象上。其結果為,書簽(對於快照類型的 Recordset 對象,記錄集數據)被保存在局部內存中,用戶不必操縱 Data 控件,也不必在代碼中調用 MoveLast 方法。用於創建 Recordset 的頁面鎖也被釋放得更快,以使其它的 Recordset 對象能訪問相同的數據。在代碼中創建但是沒有賦值給 Data 控件的 Recordset 對象不能自動被 Jet 引擎移居。請通過代碼移居這些對象。由於 Data 控件以後臺方式移居它的 Recordset,所以附加的 Recordset 可能被創建。

可以用鼠標操縱 Data 控件,由壹個記錄移動到另壹個記錄或移動到 Recordset 的開始或結尾。EOFAction 和 BOFAction 屬性決定了當用戶使用鼠標移動到 Recordset 的開始或結尾時將發生的事情。不能將焦點置於 Data 控件上。

有效性檢查

使用 Validate 事件和 DataChanged 屬性對寫入數據庫的記錄執行合法性檢查。

數據訪問對象

在過程中可以使用由 Data 控件創建的 Database 和 Recordset 數據訪問對象。每個 Database 和 Recorset 對象都有自己的屬性和方法,可以編寫使用這些屬性和方法的過程來操縱數據。

例如,Recorset 對象的 MoveNext 方法把當前記錄移動到 Recordset 中的下壹個記錄。要調用這個方法,可以使用此代碼:

Data1.Recordset.MoveNext

Data 控件能訪問 Jet 引擎 3.0 版中三種 Recorset 對象的任何壹種。如果不選擇記錄集類型,則 dynaset 型的 Recordset 被創建。

在許多情況下,創建的 Recorset 對象的缺省類型和配置效率不是很高。也就是說,可能不需要壹個具有可更新的,支持全屏滾動的,keyset 類型的光標訪問數據。例如,壹個只讀的,只能向前的,快照類型的 Recordset 創建起來可能比缺省光標快得多。就現有情況盡可能選擇最有效的類型、Exclusive、Options 和 ReadOnly 屬性。

註意 使用 Data 控件時用於決定 Recordset 類型的常數不同於用於確定的已創建的 Recorset 類型的或者用來以 OpenRecordset 方法創建 Recorset 對象的常數。

為選擇特定的 Recordset 類型,把 Data 控件的 V 屬性設成:

Recordset 類型 值 常數

表 0 vbRSTypeTable

Dynaset 1 (缺省)vbRSTypeDynaset

快照 2 vbRSTypeSnapshot

重點 Data 控件不能用於訪問通過 dbForwardOnly 選項位設置創建的 Recorset 對象。

專業版和企業版

就數據訪問而言,Visual Basic 的學習版、專業版和企業版間的主要差別是創建新數據訪問對象的能力。在學習版中,不能在代碼中聲明(帶有 Dim 關鍵字的)變量為數據訪問對象。這意味著只有 Data 控件能創建 Database 和 Recorset 對象。

在專業版和企業版中,可以創建新的 Recordset 對象並把它賦值給 Data 控件的 Recordset 屬性。任何和 Data 控件相連的被連結的控件允許在創建的 Recordset 中操縱記錄。要保證被連結的控件的 DataField 屬性賦值給在新的 Recordset 中合法的字段名。

存儲的查詢

當使用 Data 控件時,另外壹個重要選項是執行存儲的查詢的能力。如果事先創建 QueryDef 對象,Data 控件能執行它並用 QueryDef 對象保存的 SQL、Connect 和其它屬性創建 Recordset。為了執行 QueryDef,請把 Data 控件的 RecordSource 屬性設置成 QueryDef 的名字並使用 Refresh 方法。

如果所保存的 QueryDef 包含參數,則需要建立 Recordset 並把它傳遞給 Data 控件。

BOF/EOF 處理

當遇到無記錄的 Recordset 時,Data 控件也能處理所發生的情況。通過改變 EOFAction 屬性,可以通過對 Data 控件編程以自動進入 AddNew 模式。

通過使用 Align 屬性,能對 Data 控件編程以使它自動移動到它父窗體的頂部或底部。在任何壹種情況下,當父窗體改變大小時,Data 控件水平地改變以大小適應父窗體的寬度。該屬性允許 Data 控件放在 MDI 窗體中而不必包含 Picture 控件。

  • 上一篇:我的高光時刻作文
  • 下一篇:什麽是叠代_具體算法是怎樣的
  • copyright 2024編程學習大全網