共用方式為


HelloData 的註解

HelloData 應用程式會逐步執行一般 ADO 應用程式的基本作業:取得、檢查、編輯和更新資料。 當您啟動應用程式時,請按一下第一個按鈕 [取得資料]。 這會執行 GetData 副程式。

GetData

GetData 會在模組層級變數 m_sConnStr 內放入有效的連接字串。 如需連接字串的詳細資訊,請參閱建立連接字串

使用 Visual Basic 的 OnError 陳述式來指派錯誤處理常式。 如需 ADO 的錯誤處理詳細資訊,請參閱錯誤處理。 系統會建立新的 Connection 物件,並將 CursorLocation 屬性設定為 adUseClient,因為 HelloData 範例會建立已中斷連線的 Recordset。 這表示一旦從資料來源擷取到資料,與資料來源的實體連線就會中斷,但您仍然可以使用在 Recordset 物件中以本機方式快取的資料。

開啟連線之後,請將 SQL 字串指派給變數 (sSQL)。 然後為新的 Recordset 物件 m_oRecordset1 建立執行個體。 在下一行程式碼中,於現有 Connection 上開啟 Recordset,並傳入 sSQL 以作為 Recordset 的來源。 您可以協助 ADO 判斷您傳遞作為 Recordset 來源的 SQL 字串是命令的文字定義,方法是將最後一個引數中的 adCmdText 傳遞給 Recordset Open 方法。 這一行也會設定與 Recordset 相關聯的 LockTypeCursorType

下一行程式碼會將 MarshalOptions 屬性設定為等於 adMarshalModifiedOnlyMarshalOptions 會指出應該將哪些記錄封送處理至中介層 (或網頁伺服器)。 如需封送處理的詳細資訊,請參閱 COM 文件。 當您搭配使用 adMarshalModifiedOnly 與用戶端資料指標 (CursorLocation = adUseClient) 時,系統只會將用戶端上修改過的記錄寫回中介層。 將 MarshalOptions 設定為 adMarshalModifiedOnly 可以改善效能,因為封送處理的資料列會變少。

接下來,將 Recordset 中斷連線,方法是將其 ActiveConnection 屬性設定為等於 Nothing。 如需詳細資訊,請參閱更新和保存資料中的<中斷並重新連線資料錄集>。

關閉資料來源的連線,並終結現有的 Connection 物件。 這會釋放其取用的資源。

最後一個步驟是將 Recordset 設定為表單上 Microsoft DataGrid 控制項的 DataSource,以便您可以輕鬆地在表單上顯示 Recordset 的資料。

按一下第二個按鈕 [檢查資料]。 這會執行 ExamineData 副程式。

ExamineData

ExamineData 會使用 Recordset 物件的各種方法和屬性來顯示 Recordset 中資料的相關資訊。 其會使用 RecordCount 屬性來報告記錄數目。 其會對 Recordset 進行迴圈處理,並在表單上的顯示文字方塊中列印 AbsolutePosition 屬性的值。 此外,在處於迴圈時,系統會將第三筆記錄的 Bookmark 屬性值放入變體變數 vBookmark 中,以供稍後使用。

常式會使用其稍早儲存的 bookmark 變數,直接瀏覽回到第三筆記錄。 常式會呼叫 WalkFields 副程式,這個副程式會對 RecordsetFields 集合進行迴圈處理,並顯示集合中每個 Field 的詳細資料。

最後,ExamineData 會使用 RecordsetFilter 屬性來僅篩選出 CategoryId 等於 2 的記錄。 套用此篩選的結果會立即顯示在表單上的顯示格線中。

如需 ExamineData 副程式中所示功能的詳細資訊,請參閱檢查資料

接下來,按一下第三個按鈕 [編輯資料]。 這會執行 EditData 副程式。

EditData

當程式碼進入 EditData 副程式時,Recordset 仍在對 CategoryId 等於 2 進行篩選,因此只會顯示符合篩選準則的項目。 其會先對 Recordset 進行迴圈處理,並將 Recordset 中每個可見項目的價格加 10%。 [價格] 欄位的值可藉由將該欄位的 Value 屬性設定為等於新的有效金額而加以變更。

請記住,Recordset 會與資料來源中斷連線。 在 EditData 中所做的變更只會對本機快取的資料複本來發生。 如需詳細資訊,請參閱編輯資料

等到您按一下第四個按鈕 [更新資料] 後,系統才會對資料來源進行變更。 這會執行 UpdateData 副程式。

UpdateData

UpdateData 會先移除已套用到 Recordset 的篩選。 程式碼會先移除 m_oRecordset1 再將其重設為表單上 Microsoft Bound DataGrid 的 DataSource,讓未篩選的 Recordset 出現在格線中。

然後,程式碼會檢查您是否可以搭配使用 Supports 方法與 adMovePrevious 引數,在 Recordset 中往後移動。

常式會使用 MoveFirst 方法移至第一筆記錄,並使用 Field 物件的 OriginalValueValue 屬性顯示欄位的原始值和目前值。 這些屬性與 (此處未使用的) UnderlyingValue 屬性會在更新和保存資料中進行討論。

接下來,系統會建立新的 Connection 物件,並用來此物件重新連線到資料來源。 您可以將新的 Connection 設定為 RecordsetActiveConnection,以將 Recordset 重新連線到資料來源。 為了將更新傳送到伺服器,程式碼會在 Recordset 上呼叫 UpdateBatch

如果批次更新成功,模組層級旗標變數 m_flgPriceUpdated 會設定為 True。 這會在稍後提醒您清除對資料庫所做的所有變更。

最後,程式碼會回到 Recordset 中的第一筆記錄,並顯示原始值和目前值。 在呼叫 UpdateBatch 後,這兩個值會變得相同。

如需如何更新資料的詳細資訊 (包括當 Recordset 中斷連線而讓伺服器上的資料有所變更時的處理方式),請參閱更新和保存資料

Form_Unload

有幾個原因讓 Form_Unload 副程式變得很重要。 首先,因為這是範例應用程式,Form_Unload 會在應用程式結束前,清除對資料庫所做的變更。 其次,程式碼會顯示如何使用 Execute 方法,直接從開啟的 Connection 物件執行命令。 最後,其會顯示範例來說明如何針對資料來源執行 non-row-returning 查詢 (UPDATE 查詢)。