第五章 數據集數據的后面.....
第一節 數據的狀態
當用Delphi和ADO開發數據庫應用程序時,大部分工作用于學習數據集組件的幫助文檔。。為了創建一個基于ADO的程序,Delphi提供了幾個數據集組件:TAdoTable、TAdoQuery和其他的組件。它們用于獲得、呈現和修改數據庫表或查詢的數據。
在本教程的第五章,我們將通過介紹大多數感興趣的數據集組件的一些屬性、事件和方法來切實了解怎樣呈現、瀏覽和讀取數據。
挑選、設置、連接和獲得(Pick, set, connect and get)
既然已到了第五章,你應該已經熟悉創建一個數據庫表單所需的步驟。在第四章我們已手工建立了一個簡單的數據瀏覽表單。本章將用它繼續討論。
到現在為止,我們僅使用了一個(ADO)數據集組件:TAdoTable。了解TADOQuery和TADODataSet(作為數據集組件)對同樣的方法和事件使用同樣的設置是很重要的。
芝麻開門;芝麻關門(Open Sesame ; Close Sesame)
Delphi數據庫開發的很重要的特征之一是:Delphi可以在程序設計時讓我們對數據進行處理。你可以回憶一下—在前一章,我們使用Active屬性在設計時就打開了與數據的活動連接。
不難理解,在開始處理表的數據之前,程序必須首先打開數據集。Delphi有兩種方法實現此功能。第一是如我們已看到的,可以在設計或運行時設置Active屬性為True;第二是我們可以在運行時調用Open方法。例如,增加如下的代碼到表單的OnCreate事件句柄中,從而得到ADOTable組件的數據。
ADOTable1.Open;
注:每個ADO數據集都可通過它自己的ConnectionString屬性或一個ADOConnection組件(和它的ConnectionString)訪問數據庫的數據。如果ADOTable1組件與ADOConnection1組件相連(推薦使用此方式),打開ADOTable將激活相應的ADOConnection組件。ADOConnection提供兩個將被執行的事件:OnWillConnect和OnConnectComplete。
Open方法設置Active屬性為True并激活連接。當我們處理完連接時,我們可以設置Active屬性為False或調用Close方法斷開連接。通常我們都在表單的OnClose事件句柄中放入對Close方法的調用:
ADOTable1.Close;
在繼續之前,知道對數據集方法和屬性的處理依賴于對數據當前狀態的了解是至關緊要的。簡單地說,數據集的State(狀態)屬性決定任何時候數據集上的什么行為可以發生或不發生。
How are you doing?
如果數據集是關閉的,數據的State將顯示為Inactive(非激活)連接。當連接是關閉時,沒有操作、行為或方法可以對數據實施。我們第一次打開數據集的連接時,數據集處于默認的Browse(瀏覽)狀態。你應該始終了解“你的”數據所處的狀態。例如,當我們把數據集連接到DBGrid時,用戶可以看到潛在的數據集(或記錄集),但要想改變某些數據就必須把State設置為Edit。
當程序處理數據時,了解數據集狀態在不停的改變時非常重要的。例如,當在DBGrid中瀏覽數據時(Browse狀態),用戶開始編輯記錄,狀態將自動改變為Edit。當然,當設置數據可視化控件(DBGrid、DBEdit)的AutoEdit屬性為True時,這是它們默認的行為。
但是,我們怎樣得到狀態呢?ADOTable(其他任何數據集組件也一樣沒有)沒有處理狀態改變時的觸發器。
好,讓我們看一看:對每個數據集組件,我們通常使用一個數據源組件來呈現于一個或多個數據可視化控件的連接。就是這樣。
每個數據源組件都有一個OnStateChange事件,無論潛在的數據集狀態什么時候改變它都見觸發。把下面的代碼放到OnStateChange事件句柄中,用表單的標題顯示ADOTable1數據集組件的當前狀態:
PRocedure TForm1.DataSource1StateChange(Sender: TObject);
var ds: string;
begin
case ADOTable1.State of
dsInactive: ds:='Closed';
dsBrowse : ds:='Browsing';
dsEdit : ds:='Editing';
dsInsert : ds:='New record inserting';
else
ds:='Other states'
end;
Caption:='ADOTable1 state: ' + ds;
end;
新聞熱點
疑難解答
圖片精選