14.6 修改數(shù)據(jù)庫中的記錄
我們掌握了字段對象的概念和如何查找數(shù)據(jù)庫中的記錄之后,下面我便可以很方便地修改數(shù)據(jù)庫中現(xiàn)存的記錄了,一般來說,在程序中修改數(shù)據(jù)庫中的記錄包括下面這些步驟:
1、在數(shù)據(jù)庫中找到要修改的記錄,并將記錄指針移至該記錄。
2、調(diào)用Edit方法將與數(shù)據(jù)庫表相連的TTable部件設(shè)置成編輯狀態(tài)。
3、修改一個(gè)或多個(gè)字段。
4、調(diào)用post方法將修改后的記錄寫入數(shù)據(jù)庫。
以上這幾個(gè)步驟只是概述性的,具體實(shí)現(xiàn)時(shí)還有很多細(xì)節(jié)需要留心,我們通過一個(gè)例子來演示上面的全過程,以便讓讀者進(jìn)一步地了解和掌握修改記錄的方法。
例14.6 我們?yōu)樗膫(gè)按鈕分別編寫了事件處理過程,用來遍歷數(shù)據(jù)庫中的記錄并對每個(gè)客戶記錄的Company字段進(jìn)行修改,在程序?qū)τ涗涍M(jìn)行更新操作時(shí)窗口中的控件都是無效的,在這個(gè)例子中我們還編寫了一個(gè)簡單的異常代碼塊用來確保在更新過程中出現(xiàn)異常時(shí)使控件恢復(fù)正常操作。
修改數(shù)據(jù)庫記錄
14.6.1 Edit方法Post方法
為了能讓用戶通過程序修改數(shù)據(jù)庫表中的記錄,TTable部件必須要處在編輯狀態(tài)下。在大多數(shù)情況下,數(shù)據(jù)庫表都是以瀏覽(只讀方式)方式打開的,也就是說它的每一個(gè)字段可以被讀取介不能被編輯修改。調(diào)用Edit 方法能夠?qū)?TTable 部件置成編輯狀態(tài), 當(dāng)TTable部件處于編輯狀態(tài)后,我們才可以通過程序修改當(dāng)前記錄指針?biāo)赶虻挠涗,但這樣修改后的記錄不會(huì)立即被寫入到磁盤上的實(shí)際數(shù)據(jù)庫表中。要想保存對記錄的修改,必須要調(diào)用Post方法,Post方法才真正將我們對記錄的修改寫入實(shí)際的數(shù)據(jù)庫表中。
一般來說,用來掃描整個(gè)數(shù)據(jù)庫表并修改每個(gè)記錄的某一個(gè)字段的程序如下所示:
with Table Do
begin
DisableControls;{在修改記錄的過程中,使其它部件無效}
First; {將記錄指針指向第一條記錄}
while not EOF do
begin
<讀取記錄的一個(gè)字段值到一個(gè)變量中>
<做適當(dāng)?shù)男薷?gt;
Edit; {將TTable部件置成編輯狀態(tài)}
<將修改后的字段值寫回到其對應(yīng)的字段>
post; {將修改后的記錄寫回?cái)?shù)據(jù)庫}
next; {修改下一條記錄}
end;
enablecontrols; {恢復(fù)其它部件的功能}
end;
程序都是對TTable部件進(jìn)行操作,因此使用With語句來防止錯(cuò)誤的擴(kuò)散是很有意義的。在這里要注意Disablecontrols方法和EnableControls方法的使用。DisableControls方法是在程序修改TTable部件中的記錄時(shí),切斷TTable部件與數(shù)據(jù)訪問部件TDatasource 部件的聯(lián)系。否則,在對TTable中的每一修改之后,TDataSource 部件都會(huì)更新窗體中所有數(shù)據(jù)瀏覽部件的顯示內(nèi)容,這樣會(huì)急劇減慢處理過程而且浪費(fèi)時(shí)間。EnableControls方法是與DisableControle方法執(zhí)行相反的操作,它是用來恢復(fù)TTable部件與TDatasource部件的聯(lián)系并促使所有的數(shù)據(jù)瀏覽部件更新顯示。
調(diào)用First方法是將記錄指針移到數(shù)據(jù)庫表中的第一條記錄,確保程序從表中的第一條記錄開始進(jìn)行修改。調(diào)用Next方法是將記錄指針從當(dāng)前的記錄移到下一條記錄,這樣保證了從表中的第一條記錄開始逐條記錄進(jìn)行修改,直到修改完最后一條記錄。如果不調(diào)用Next方法,程序?qū)?huì)陷入無窮的死循環(huán)。
相關(guān)推薦:2010年9月計(jì)算機(jī)等級考試試題及答案解析專題北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |