程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi數據訪問部件的應用及編程(3)

Delphi數據訪問部件的應用及編程(3)

編輯:Delphi

15.3.4 數據集中的數據維護 

數據集中的數據維護主要包括數據記錄的修改,插入和刪除。Delphi為數據集部件提供了相應的方法用於其中的數據維護。這些方法如表15.所示。 

表15.3 Delphi用於數據維護的方法

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

方 法 名 功 能

──────────────────────────────

Edit 將數據集置為編輯狀態

──────────────────────────────

Append 投寄所有被修改的記錄,將記錄指針移到表中的最後

一條記錄,且將數據集置為插入狀態

──────────────────────────────

Insert 投寄所有被修改的記錄將數據集置為插入狀態

──────────────────────────────

Post 將插入的新記錄和修改的記錄寫回磁盤上的數據庫表,

即投寄,當投寄成功時數據集回到浏覽狀態,若投寄

不成功數據集仍然保持原有狀態

──────────────────────────────

Cancel 取消當前的操作且將數據集置為浏覽狀態

──────────────────────────────

Delete 刪除當前記錄指針所在的記錄且將數據集置為浏覽狀態

──────────────────────────────

AppendRecord 在表的最後插入一條新記錄,記錄的各個字段值作為

AppendRecord的參數傳遞給新記錄

──────────────────────────────

InsertRecord 在當前指針所在記錄的後面插入一條新記錄, 記錄的

各個字段值作為InsertRecord的參數傳遞給新記錄。

──────────────────────────────

SetRecords 修改當前記錄,字段名和相應的字段值作為SetRecords

的參數

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

Edt方法:如果應用程序想對數據集中的數據記錄進行修改,我們必須要將數據集設置成編輯狀態。調用數據集部件的Edit方法便可以將數據集置成編輯狀態,當數據集已經處在編輯狀態時,調用Edit方法不會產生作用。當數據集處於編輯狀態時,移動記錄指針或調用post方法都可以將當前記錄的修改寫回到磁盤數據庫表中。在程序中, Edit方法和post方法常常配合在一起使用,用於修改表中的記錄。如: 

Table1.Edit;
Tabel1.FIEldByName('CustNo').Asstring := '1234';
Table1.st; 

在上述這一段程序代碼中,第一行程序是將Table1置成編輯狀態,第二行程序是對當前記錄指針所在的記錄的CustNo字段的值修改成'1234',第二行程序是調用post方法將對當前記錄的修改寫回數據庫表。

Append方法和Insert 方法:這兩個方法都是將數據集部件置成插入狀態,以在表中插入新記錄,Insert方法是在當前指針位置的記錄後面插入一打新記錄,Append方法是在表的尾部插入一打新記錄,不過這要注意,無論用戶是調用Insert方法還是Append方法插入新記錄,增加記錄到一個具有索引的表中時,都是按照索引順序寫入其位置,也就是說對於索引表格Insert方法和Append方法的作用是一樣的,Append僅適用於沒有索引的表。Insert方法和Append方法實際上是將數據集置成插入狀態,並且插入一條空白記錄,要真正插入一條新記錄,我們必須在調用Insert或Append方法之後,還要給新記錄的各個字段賦值,最後調用post方法,將插入的記錄寫回數據庫表。調用這兩種方法插入新記錄的一般步驟如下: 

With tabe1 DO
Begin
Insert; {調用Insert方法,插入一條空記錄}
<為記錄的各字段賦值>
Post;
End; 

Post方法:數據集中的記錄被修改或插入新記錄時調用post方法將數據集的修改寫回到數據庫表。根據數據集所處的狀態不同,post方法所產生的作用和效果是不一樣的:

● 當數據集處於編輯狀態時,調用post方法,將當前記錄的修改寫回數據庫表

● 當數據集處於插入狀態時,調用post方法,將插入的新記錄寫回數據庫表

● 當數據集處於SetKey狀態時,調用post方法,將數據集置成浏覽狀態(Browse狀態)

post方法的調用既可以顯式地調用,也可以隱含地調用,當數據集處於編輯狀態或插入狀態時,當移動記錄指針時,Delphi會隱含地調用post方法,將將當前記錄的修改寫回數據庫表,在程序調用Insert方法或Append方法時,也會隱含地調用Post方法,將先前的數據集的修改寫回數據庫表。

Delete方法:Delete方法用於刪除表中的記錄,調用Delete方法時,將會刪除表中當前的記錄,並且自動地將記錄指針移到被刪記錄的下一條記錄,同時將數據集置成Browse狀態。

Cancel方法:Cancel方法用於取消當前的操作,當程序還沒有調用Post方法,將對記錄的修改寫回數據庫表時,調用Cancel方法,可以將記錄恢復到沒有修改之前的狀態。並且在調用Cancel方法時,它總是將數據集置成Browse狀態。

AppendRecord方法和InsertRecord方法:這兩個方法分別與Append方法和Insert方法相似。它們都是用於在表中插入一條新記錄,但AppendRecord方法和InsertRecord方法比Append和Insert方法更簡單更方便一些,它們直接在表中插入一條新記錄,新記錄的各個字段值作為AppendRecord或InsertRecord方法的參數傳遞給新記錄並且不需顯式地調用post方法,將插入的新記錄寫回數據庫表。在給插入的新記錄賦字段值時,將由多個字段值組成的數組作為AppendRecord或InsertRecord的參數,在字段值數組中可以為每一個字段提供一個值,或從左邊一列開始依次為任意多個字段賦值。也就是說,用戶可以從數據庫表的最左一列起,把許多列的值同時傳遞給InsertRecord,直到所有的字段被賦值,用戶也可以省略字段序列後面的的一些字段值,InsertRecord會用空值來填充這些字段:用戶也可以對那些明確希望用空填充的字段傳遞保留字NIl。

例如:如果表Country有Name,Captial,Continent,Area和Population字段,並且數據集部件Table1與它相連,下面的代碼便可以在Country表中當前記錄的後面插入一條新記錄。

Table1.InsertRecord (["中國","北京","五洲"]);

在上述代碼中沒有為Area和population字段賦值,InsertRecord會用空值來填這兩個字段。

SetRecords方法:調用該方法可以修改表中當前記錄的多個字段的值,調用該方法之前必須將數據集部件置成編輯狀態,調用該方法之後,還要調用post方法,才能真正將當前記錄的修改寫回數據庫表。調用SetRecord方法時,被修改的字段值必須要與表中實際存在的字段名對應,並且數據類型要相匹配。例如,下面的代碼是修改上面剛剛插入的那條記錄。

Table1.Edit;
Tabel1.SetRecord(, , ,9600000,1200000000);
Tabel1.post;

這一段代碼是修改上面剛剛插入的那條記錄的Area 和Population 字段的值,而對Name,Continent和Captial字段沒有修改。

在數據集部件中,還有一個重要方法Abort方法,該方法是用於取消其他方法的調用的,如在插入記錄、修改記錄和刪除記錄之前,往往需要用戶確認是否真的要執行這種操作,此時調用Abort方法便可取消各種方法的調用,下面的代碼是在用戶刪除一條記之前,讓用戶確認是否真的要執行刪除操作。 

Tabel1.BeforeDelete(DataSet:TDataSet);

If MessageDlg('真的要刪除記錄嗎?',

mtConfirmation,mbyesNoCanel,0 <> mryes then

Abort; {取消刪除操作}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved