Delphi資料庫程式設計教程(九) (轉)

worldblog發表於2007-12-14
Delphi資料庫程式設計教程(九) (轉)[@more@]

第五章 資料集資料的後面.....

第一節 資料的狀態

  當用和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(瀏覽)狀態。你應該始終了解“你的”資料所處的狀態。例如,當我們把資料集連線到Grid時,可以看到潛在的資料集(或記錄集),但要想改變某些資料就必須把State設定為Edit。
  當程式處理資料時,瞭解資料集狀態在不停的改變時非常重要的。例如,當在DBGrid中瀏覽資料時(Browse狀態),使用者開始編輯記錄,狀態將自動改變為Edit。當然,當設定資料視覺化(DBGrid、DBEdit)的AutoEdit屬性為True時,這是它們預設的行為。

  但是,我們怎樣得到狀態呢?ADOTable(其他任何資料集元件也一樣沒有)沒有處理狀態改變時的。

  好,讓我們看一看:對每個資料集元件,我們通常使用一個資料來源元件來呈現於一個或多個資料視覺化控制元件的連線。就是這樣。

  每個資料來源元件都有一個OnStateChange事件,無論潛在的資料集狀態什麼時候改變它都見觸發。把下面的程式碼放到OnStateChange事件控制程式碼中,用表單的標題顯示ADOTable1資料集元件的當前狀態:

  procedure TForm1.Data1StateChange(Sender: T);
  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;


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-993064/,如需轉載,請註明出處,否則將追究法律責任。

相關文章