41
第第第第 Borland Database Engin e Form Wizard Table 第第第第第 Table 第第第第第第 Tquery 第第第第第第第

第十七章 Borland Database Engine

Embed Size (px)

DESCRIPTION

第十七章 Borland Database Engine. Form Wizard Table 與連繫元件 Table 的屬性與方法 Tquery 資料庫與統計圖. 1 7 -1 Form Wizard. Form Wizard 是一種精靈的方式 , 一步一步指導使用者建立資料表的輸出入表單 , 請看以下範例說明。. 範例 17-1a. 請使用 Form Wizard 建立一個 fri.db 的輸出入表單。. 17 -2 Table 與連繫元件. - PowerPoint PPT Presentation

Citation preview

Page 1: 第十七章 Borland Database Engine

第十七章Borland Database Engine Form Wizard Table 與連繫元件 Table 的屬性與方法 Tquery 資料庫與統計圖

Page 2: 第十七章 Borland Database Engine

1 7 -1 Form Wizard Form Wizard 是一種精靈的方式 , 一步

一步指導使用者建立資料表的輸出入表單 , 請看以下範例說明。

Page 3: 第十七章 Borland Database Engine

範例 17-1a 請使用 Form Wizard 建立一個 fri.db

的輸出入表單。

Page 4: 第十七章 Borland Database Engine

17 -2 Table 與連繫元件 在資料庫程式設計裡 , 常見的資料存取

方式是透過連繫元件 , 逐一巡覽、編輯資料庫。利用此一方式存取資料可不用寫任何程式 , 即可完成資料編輯任務 , 其缺點是只能逐筆由使用者目視搜尋 ; 另一種方式是自己寫程式進行資料編輯 , 這種方式比較彈性 , 您可以自己下達指令進行記錄的新增、或搜尋後修改、刪除等任務 , 請看 17-3 節。

Page 5: 第十七章 Borland Database Engine

資料連繫元件 BCB 的資料連繫元件 , 如下圖所示 , 這些元件可以配

合各種資料源元件 ( 例如 BDE 、 ADO 、 dbExpress 或 InterBase) 來展示資料表的記錄 , 讓程式設計者不用寫任何程式即可完成資料的編輯動作。 BCB 的資料連繫元件有二維表格的 DBGrid ( 請看範例 17-2a), 個別欄位的連繫元件則有 DBText 、 DBEdit 、DBMemo 、 DBImage, 讓程式設計者不用寫任何程式即可逐筆瀏覽、新增、修改、刪除含有文字 (Alpha) 、備註 (Memo) 及圖形 (Graphic) 等型別的欄位 , 請看範例 17-2b 。

Page 6: 第十七章 Borland Database Engine

範例 17-2a 示範以 Table 元件配合二維表格連繫元

件 DBGrid 存取 fri.db 的內容。

Page 7: 第十七章 Borland Database Engine

範例 17-2b 示範個別欄位連繫元件的使用。

Page 8: 第十七章 Borland Database Engine

欄位編輯器 以上都是透過人工的方式連繫資料庫 , B

CB 另有一種資料連繫方式 , 稱為欄位編輯器 , 也可以縮短應用程式的開發 , 它的優點是程式設計者可以將欄位編輯器的欄位物件直接拖曳到表單 , 即可完成輸出入表單的製作。此外欄位編輯器另有兩種特殊欄位 , 分別是計算欄位與查閱欄位。

Page 9: 第十七章 Borland Database Engine

計算欄位 依據資料庫正規化的規則 , 可計算而得的欄位

不能放入資料庫。所以 , 若某一欄位可由同一資料庫的某些資料表的某些欄位計算而得 , 則稱此欄位為計算欄位 , 且此欄位不能存入資料庫。例如 , 若某一資料表已有國文、英文與數學成績 , 則此三科的平均 , 並不能儲存入資料庫 , 往後若要求其平均 , 均要自行計算。為了減輕程式設計師的負擔 , BCB 便提供 " 計算欄位 " 供程式設計師使用。關於計算欄位的使用 , 請看範例 17-2d

Page 10: 第十七章 Borland Database Engine

查閱欄位 依據資料正規化的規則 , 為求欄位內容的單一

性 , 任何欄位均只能在同一資料庫出現一次。所以 , 若某一欄位需要在不同的欄位重覆引用 , 則應將此欄位先以代碼表示 , 然後任一資料表需引用此欄位時 , 均以代碼表示。例如 , 學校的成績處理系統 , 學生的名字已存在學生基本資料表 , 則每次在輸入成績資料時 , 便不能再輸入學生姓名與成績 , 只能以學生代碼與成績的方式輸入 , 以免造成資料的重覆性。所以在學生成績資料表中就沒有學生姓名 , 若要取得學生姓名 , 則可透過欄位編輯器的查閱欄位至學生基本資料表查閱而得 , 請看範例 17-2e 。

Page 11: 第十七章 Borland Database Engine

範例 17-2c 請以欄位編輯器展示 stugrd.db 的內容。

Page 12: 第十七章 Borland Database Engine

範例 17-2d 同上範例 , 但增加 " 平均 " 欄位 , 計算

國、英及數三科的平均。

Page 13: 第十七章 Borland Database Engine

範例 17-2e 同上範例 , 但增加查閱欄位 , 印出學生姓名 , 其中含有姓名欄的 stuname.db 內容如下圖 :

Page 14: 第十七章 Borland Database Engine

主要/次要明細 (Master Detail) 於學生資料表中 , 通常一個學生含有許多次的考試成

績 , 或於客戶資料表中 , 每一個客戶通常都有好幾筆交易 , 這就是一種一對多的關係 , 例如 stuname.db 是學生基本資料表 , 資料內容請參閱範例 17-2e 。( 為了能產生關聯 , 其中 Id 欄已製作索引。 )

stugrd.db 是每位學生的每次考試成績資料表 , 如右圖。 ( 為了能與 stuname.db 產生關聯 , 其中 Id 欄已製作索引 )

以下範例將介紹如何於觀看學生基本資料表 (stuname.db) 時 , 能同時顯示指定學生的全部成績 , 此即為 " 主要 / 次要明細 " 的功能。

Page 15: 第十七章 Borland Database Engine

範例 17-2f 以 Table 示範主要 / 次要明細表。

Page 16: 第十七章 Borland Database Engine

17 -3 Table 的屬性與方法 上一節使用資料庫連繫元件 , 所以不用

任何程式即可瀏覽與編輯資料庫內容。其優點是省時省事 , 但這些功能對實務的進銷存等問題 , 還是不足 , 本節要說明的是 Table 的屬性與方法如下 :

Page 17: 第十七章 Borland Database Engine

資料項屬性 自行使用 Table 的方法存取資料庫 , 仍然可以使用上一節連繫元件存取資料項 , 若不使用連繫元件 , 則可使用以下資料項屬性存取資料項。Table1->FieldValues[" 欄位名稱 "] ;Table1->FieldByName(" 欄位名稱 ")->型別轉換函

數 ;Table1->Fields->Fields[欄位索引 ]->型別轉換函數 ;

Page 18: 第十七章 Borland Database Engine

在以上敘述中 , 型別轉換函式可為 AsVariant 、 AsSring 、 AsInteger 、 AsFloat 、 AsCurrency 、 AsDateTime 及 AsBoolean, 其目的是將原始資料轉為與目的物件相同的資料型別。例如 , 以下式子均可取得 grade.db 的 Name 欄位。

Edit1->Text = Table1->FieldValues["Name"] ;Edit1->Text = Table1->FieldByName("Name")->AsSt

ring ;Edit1->Text = Table1->Fields->Fields[0]->AsString ;

若已將欄位物件 (TField) 加入欄位編輯器 , 則可使用欄位物件名稱 , 代表某一資料項 , 例如以下式子是代表存取 Name 欄位的內容。Table1Name->Value // 要注意大小寫Ta b le 1Name -> AsS t r i ng

Page 19: 第十七章 Borland Database Engine

記錄指標 每一個資料集均有一個記錄指標 , 如下

圖。此記錄指標的功能即為指向記錄編輯對象 , 也就是往後資料表的新增、修改與刪除對象均是此記錄指標所指的記錄。

Page 20: 第十七章 Borland Database Engine

Table 元件移動記錄指標的方式如下表 :

Page 21: 第十七章 Borland Database Engine

開啟或關閉資料表 Table 元件移動記錄指標的方式如下表 :

Page 22: 第十七章 Borland Database Engine

範例 17-3a 示範各種記錄項屬性的用法與指標的移

動。

Page 23: 第十七章 Borland Database Engine

增加或刪除記錄 增加或刪除一筆記錄的方法如下表 :

Page 24: 第十七章 Borland Database Engine

編輯 (Edi t) 或寫入 (Post)狀態 編輯或寫入狀態的設定方法如下表 :

Page 25: 第十七章 Borland Database Engine

循序查詢 ( 不用索引檔 ) 不用索引檔的資料查詢方法如下表 :

Page 26: 第十七章 Borland Database Engine

索引查詢 使用索引查詢將可縮短查詢時間 , 索引

查詢方法如下表 :

Page 27: 第十七章 Borland Database Engine

範例 17-3b示範 Locate 查詢 , 並修改記錄內容。題目分析 於 fri.db 中 , 查詢 " 洪子堯 ", 若資料

表中有此記錄 , 則將指標移到 " 洪子堯 ", 並將 " 洪子堯 " 的身高欄位改為110 。

Page 28: 第十七章 Borland Database Engine

範例 17-3c 示範 Lookup 查詢。

Page 29: 第十七章 Borland Database Engine

範例 17-3d 示範 Gotokey, 並修改紀錄內容。

Page 30: 第十七章 Borland Database Engine

範例 17-3e 示範 Findkey, 並修改紀錄內容。

Page 31: 第十七章 Borland Database Engine

範例 17-3f 示範紀錄的新增與刪除。

Page 32: 第十七章 Borland Database Engine

17 -4 TQu e r y 前面的 Table 元件是一種程序式的語言 , 你必須一步一步的告知編繹器你要怎麼作 , 例如你必須一步一步的移動記錄 , 然後更正資料 , 但本節的Query 元件可以下達 SQL 敘述 , SQL 敘述的優點為它是非程序性語言 , 例如你要從 fri.db 中取身高大於 160 的記錄 , 只要下達以下 SQL 敘述 :Select * From fri Where Height > 160 // 身高的欄位為 Height

至於編繹器取資料的過程如何 , 你都可以不必了解。 SQL 敘述的另一優點是提升執行速度 , 因為 SQL 敘述可以在眾多資料表中只取合乎條件的部份欄位出來 , 不像 Table 元件會將牽涉到的資料表全部提出 , 所以只要資料庫系統慢慢龐大之後 , 使用 Table 元件所撰寫的程式都會造成網路及記憶體很大的負載。使用 SQL 敘述的第三優點為 SQL 是一種資料庫廠商標準語言 , 只要學一次SQL 敘述 , 下次你換一種程式語言 , 都不用重新學習 , 即可以將 SQL 敘述 , 套上新的語言。對於 SQL 敘述不熟的讀者請看第十九章。

Query 元件可於設計階段與執行階段下達 SQL 敘述 , 以下我們將分別於設計階段與執行階段說明Query 元件的使用。

Page 33: 第十七章 Borland Database Engine

範例 17-4a 如何於設計階段執行 SQL 敘述。 (本例欲連結別名為 horng 的資料庫 , 資料表為 stugrd.db)

Page 34: 第十七章 Borland Database Engine

範例 17-4b 同上範例 , 但於執行階段執行 SQL 敘述。

Page 35: 第十七章 Borland Database Engine

範例 17-4c 同上範例 , 但加上參數的傳遞。

Page 36: 第十七章 Borland Database Engine

範例 17-4d 示範如何關聯多個資料表。

Page 37: 第十七章 Borland Database Engine

範例 17-4e 如何新增、刪除及更正資料。

Page 38: 第十七章 Borland Database Engine

範例 17-4f 如何由使用者於執行階段下達 SQL 敘述。

Page 39: 第十七章 Borland Database Engine

範例 17-4g 同上範例 , 但設計一個更具親和性的搜

尋資料介面。

Page 40: 第十七章 Borland Database Engine

1 7 - 5 資料庫與統計圖 我們於 10-16 節已介紹 Chart 元件的用法 ,

其功能為繪製各種統計圖 , 本節則要介紹資料庫的繪圖元件 DBChart 。 DBChart 是繼承Chart 的元件 , 所以其用法大致與 Chart 相同 , 只是多了連繫屬性 DataSouce 與 ValueSource 。以下將示範如何將 grade.db 的內容以 DBChart 表現 , grade.db 內容如下 :

Page 41: 第十七章 Borland Database Engine

範例 17-5a 如何將 grade.db 的內容以 DBChart 表現。