Delphi數據庫編程新手指南(04)

第四章  數據瀏覽與導航

數據訪問所需組件

      目前爲止,本教程提供瞭如何連接到Access數據庫,以及顯示數據庫表中圖形數據的方法。上一章,我們討論了一些“高級”的數據庫編程技巧(譯者加:相對於初學者而言)——現在讓我們回到更適合“初學者”水平的課題。

      這次,你將學會如何建立一個可用於瀏覽數據庫表中記錄的窗體。

      前幾章例子涉及到的數據感知組件(ADOTable、DBGrid...),都未深入到各個組件的細節——它們爲了實現什麼功能而設計、又如何聯繫在一起的?

      一起工作

      在開發基於ADO的Delphi數據庫應用程序時,位於組件面板Data Controls、ADO以及DataAccess頁上的組件,使我們的程序能夠從數據庫中讀取和寫入信息。

      每個數據感知(data-aware)窗體,通常都包含:

幾個數據感知控件(Data Controls頁)用於創建可視化用戶界面(數據的窗體外觀)。

至少一個DataSource組件(Data Access頁)作爲窗體上數據集組件和數據感知控件之間的接口。

一個或多個數據集組件(ADO頁),提供對數據庫表或查詢結果中數據的訪問。

一個連接組件(ADO頁),將所有的數據集組件指向到特定的數據庫。

      數據控制(Data Controls)

      Delphi的數據感知控件通常位於Standard頁,但也有一些被改良用於顯示和操作數據集(表或查詢)內容的組件。控件的選擇取決於我們想要如何呈現信息,以及希望用戶如何瀏覽(操作——增加或編輯)數據集記錄。例如,DBEdit和DBMemo用來顯示數據集的單個記錄。而DBGrid,通常用於顯示整個數據集的內容。既然所有的數據感知控件都是標準Windows控件的“副本”——帶有許多額外屬性,那麼建立一個具有一定功能的數據庫應用程序也應是一個比較熟悉的任務(譯者加:與通常的Windows任務相比較)。所有的數據感知組件共享一個共同的屬性:Data Source(數據源)。

      數據源(Data Source)

      簡而言之,DataSource(數據源)組件提供一種機制,把數據集組件和顯示數據的數據可視化組件相連。通常,你需要一個DataSource組件,用於每個數據集組件與一個或多個數據可視控件的連接。

      數據集(Datasets)

      爲了創建一個基於ADO的應用程序,Delphi提供了四個數據集組件:TAdoDataSet、TAdoTable、TAdoQuery和TAdoStoredProc。所有組件用於檢索、顯示和修改數據。所有這些組件都可通過它的ConnectionString(連接字符串)屬性直接連接到ADO數據庫(如Access),或一起共享一個連接。當通過TAdoConnection組件連接時,該連接將指定一個ADO連接對象連接到ADO數據庫。

      ADO連接(ADOConnection)

      ADOConnection組件用於建立與ADO數據庫的連接。儘管每個ADO數據集組件可直接連接到數據庫,但通常我們需要使用ADOConnection組件,因其提供了用於激活連接、直接訪問ADO數據庫和處理事務的方法和屬性。爲了連接到一個特定的數據庫,我們使用ConnectionString屬性。

      現在,我們知道了相關的理論,是行動的時候了!下一步將建立一個數據窗體。在開始前,用Access打開數據庫並在數據庫中增加一些“虛擬”數據,用於以後的數據操作。

定義用戶界面(Defining the User Interface

      我們分三步來構建自己的數據瀏覽窗體。第一步,定義用戶界面;第二步,添加並配置數據訪問組件;最後,添加數據感知控件。

    開始前關閉所有打開的工程,然後進行以下步驟:

1.選擇File | New Application。這將創建一個新的工程,包含一個空白窗體、一個單元及一個工程文件;

2.在空白窗體上添加一個PageControl組件(位於組件面板的Win32頁)。使用缺省名:PageControl。

3.在PageControl上添加兩個TabSheets(在PageControl上單擊右鍵並選擇"New Page")。將TablSheet1的標題(Caption屬性)設爲“Browse(瀏覽)”,另一設爲“Edit(編輯)”。

1.在表窗體上放置一個DataSource(DataAccess頁)、一個ADOTable和一個ADOConnection(ADO頁)。全部使用缺省名稱。

2.在PageControl組件的第一頁(Browse標籤)放置一個DBGrid(DataControls頁)組件。

3.放置一個DBNavigator組件(Data Controls頁)。導航按鈕用於遍歷記錄集中的記錄。

使用ObjectInspector設置組件間的鏈接:

          DBNavigator1.DataSource = DataSource1
          DBGrid1.DataSource =DataSource1
          DataSource1.DataSet =ADOTable1
          ADOTable1.Connection =ADOConnection1
         ADOConnection1.ConnectionString = ...
         ADOConnection1.LoginPrompt = False
          ADOTable1.TableName ='Applications'

      注:如第二章中所討論的一樣,ConnectionString屬性指出數據存儲的物理位置和我們的訪問方式。你可以使用與第二章同樣的連接字符串,或者通過調用連接字符串編輯器自己建立一個。

      設置ADOConnection組件的LoginPrompt屬性爲False,阻止數據庫登錄界面出現。既然我們沒有爲數據庫設置任何密碼,因此也不需要登錄提示。


      字段(Fields)

      當我們想爲用戶提供整個記錄集(表中的數據)的時候,可以使用DBGrid組件。儘管DBGrid能讓我們的用戶在表中添加、編輯和刪除記錄——但更好的方法是爲表中的每個字段使用Field(字段)對象。字段對象主要用於控制應用程序中數據的顯示和編輯。通過使用FieldsEditor(字段編輯器),我們可以爲表中的每一列設置固定的字段對象列表。雙擊DataSet組件(ADOTable1)調用字段編輯器。爲了將字段添加到數據集的持久性字段列表,右擊列表並選擇Add Fields。

      若不是爲用戶顯示錶中的所有數據(在DBGrid中),可使用field-oriented(面向字段)的數據感知組件,如編輯框。例如DBEdit組件,是一個TEdit類的數據感知版本。

      在窗體中放置DBEdit並將其與表的字段相連,最簡單的方法如下:

1.雙擊ADOTable1組件調用Fields editor(字段編輯器);

2.選擇Name字段,如例。讓Page Control的第二個標籤成爲被選項;

3.在窗體上拖動Name字段(準確地說:TabSheet1)。


      當你在選項卡上放下Name字段時,Delphi會自動放置一個Label和DBEdit組件。Label組件的Caption(標題)與被拖動字段的DisplayLabel(顯示標籤)屬性是相同的。DBEdit通過DataSource屬性連接到數據集的數據源。如果你從字段編輯器中選擇多個字段並把它放置在窗體上,Delphi將在窗體上放置同樣多的Label/DBEdit組件。若是表中的一個“是/否”列,允許true/false值,Delphi會添加TDBCheckBox。


      OK,我們現在要做的是激活連接並滾動記錄。一個數據集(ADOTable1)組件的Active屬性表示,我們是否有一個實時連接到表。設置Active爲True或調用Open方法使ADOConnection組件的Connected屬性爲True——並在相關的數據感知控件中顯示數據。

      首先、接着、最後......(First, Move by, Last...)

      現在我們作最後的準備。我們下一步將瞭解怎樣瀏覽記錄集。

      DBNavigator組件爲瀏覽記錄集提供了一個簡單、友好的工具。除了瀏覽功能外,它還提供了操作數據的方法,如:插入、刪除或取消更改。例如,我們單擊了Delete(刪除)按鈕,則相應的記錄將會從記錄集中刪除。每個按鈕都是可選的,你可以隨意的組合它們。

     使用按鈕,可以直接跳到最後一條記錄或移動到上一個。例如,點擊Last按鈕從當前記錄移到記錄集的最後一條,並禁用Last和Next按鈕。點擊Last按鈕與調用數據集的Last方法具有相同的功效。

      需要注意的是,DBNavigator不能按一定的數量間隔進行跳躍式瀏覽。數據集的MoveBy方法可定位記錄集中任一活動記錄的位置。

       這就是本章內容,接下來我們將學習數據集的編輯和查詢。


注:數據庫可用前三章的Access數據庫。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章