首頁 考試吧論壇 Exam8視線 考試商城 網(wǎng)絡(luò)課程 模擬考試 考友錄 實(shí)用文檔 求職招聘 論文下載
2011中考 | 2011高考 | 2012考研 | 考研培訓(xùn) | 在職研 | 自學(xué)考試 | 成人高考 | 法律碩士 | MBA考試
MPA考試 | 中科院
四六級 | 職稱英語 | 商務(wù)英語 | 公共英語 | 托福 | 雅思 | 專四專八 | 口譯筆譯 | 博思 | GRE GMAT
新概念英語 | 成人英語三級 | 申碩英語 | 攻碩英語 | 職稱日語 | 日語學(xué)習(xí) | 法語 | 德語 | 韓語
計算機(jī)等級考試 | 軟件水平考試 | 職稱計算機(jī) | 微軟認(rèn)證 | 思科認(rèn)證 | Oracle認(rèn)證 | Linux認(rèn)證
華為認(rèn)證 | Java認(rèn)證
公務(wù)員 | 報關(guān)員 | 銀行從業(yè)資格 | 證券從業(yè)資格 | 期貨從業(yè)資格 | 司法考試 | 法律顧問 | 導(dǎo)游資格
報檢員 | 教師資格 | 社會工作者 | 外銷員 | 國際商務(wù)師 | 跟單員 | 單證員 | 物流師 | 價格鑒證師
人力資源 | 管理咨詢師考試 | 秘書資格 | 心理咨詢師考試 | 出版專業(yè)資格 | 廣告師職業(yè)水平
駕駛員 | 網(wǎng)絡(luò)編輯
衛(wèi)生資格 | 執(zhí)業(yè)醫(yī)師 | 執(zhí)業(yè)藥師 | 執(zhí)業(yè)護(hù)士
會計從業(yè)資格考試會計證) | 經(jīng)濟(jì)師 | 會計職稱 | 注冊會計師 | 審計師 | 注冊稅務(wù)師
注冊資產(chǎn)評估師 | 高級會計師 | ACCA | 統(tǒng)計師 | 精算師 | 理財規(guī)劃師 | 國際內(nèi)審師
一級建造師 | 二級建造師 | 造價工程師 | 造價員 | 咨詢工程師 | 監(jiān)理工程師 | 安全工程師
質(zhì)量工程師 | 物業(yè)管理師 | 招標(biāo)師 | 結(jié)構(gòu)工程師 | 建筑師 | 房地產(chǎn)估價師 | 土地估價師 | 巖土師
設(shè)備監(jiān)理師 | 房地產(chǎn)經(jīng)紀(jì)人 | 投資項(xiàng)目管理師 | 土地登記代理人 | 環(huán)境影響評價師 | 環(huán)保工程師
城市規(guī)劃師 | 公路監(jiān)理師 | 公路造價師 | 安全評價師 | 電氣工程師 | 注冊測繪師 | 注冊計量師
繽紛校園 | 實(shí)用文檔 | 英語學(xué)習(xí) | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲

2011計算機(jī)等考Delphi:數(shù)據(jù)庫創(chuàng)建及MASTAPP介紹

本章主要介紹用Delphi開發(fā)簡單的數(shù)據(jù)庫應(yīng)用程序的一般方法和步驟,首先讓讀者對Delphi強(qiáng)勁的數(shù)據(jù)庫應(yīng)用開發(fā)工具有一個直觀的印象,然后在此基礎(chǔ)上進(jìn)行復(fù)雜的數(shù)據(jù)庫應(yīng)用程序的設(shè)計。

  14.7 插入和刪除記錄

  雖然我們使用DBD或者在應(yīng)用程序窗體中用TDBNavigator可以插入、刪除表中的記錄,但是任何重要的數(shù)據(jù)庫應(yīng)用程序都是根據(jù)最終用戶的命令完成此類操作的。同樣,如果我們掌握了字段對象及其用法,修改數(shù)據(jù)庫中的記錄,插入和刪除記錄將變得非常容易。

  要想刪除表中的某一條記錄,首先將記錄指針移到該記錄處,然后調(diào)用delete方法,這樣,當(dāng)前指針?biāo)诘挠涗浘蜁粍h除,而且我們在進(jìn)行刪除操作時,不必將TTable部件設(shè)置成編輯狀態(tài)。當(dāng)前指針?biāo)诘挠涗洷粍h除之后,被刪除記錄下面的所有記錄都向前移動,記錄指針自動移到緊挨著被刪除的記錄的下一條記錄。在刪除記錄的過程中沒有提醒用戶是否真的想刪除當(dāng)前記錄的信息確認(rèn)框,因此在進(jìn)行此項(xiàng)操作時要倍加小心,如果是開發(fā)應(yīng)用程序,最好的辦法是提供一個確認(rèn)信息框確保用戶不會意外刪除記錄。

  插入一條記錄也很簡單,Delphi為用戶提供兩種方法用來插入記錄到現(xiàn)存數(shù)據(jù)庫表中,一種方法是在當(dāng)前記錄指針?biāo)诘挠涗浱幉迦胗涗?另一種方法是在數(shù)據(jù)庫表的尾部插入記錄。這兩種方法是分別調(diào)用Insert方法和Append方法實(shí)現(xiàn)的。但是無論是調(diào)用Insert方法還是調(diào)用Append方法在具有索引的數(shù)據(jù)庫表中插入記錄,增加到索引表中的記錄都將按照索引順序?qū)懭氲綌?shù)據(jù)庫表中,也就是說對于索引表,調(diào)用Insert和Append方法的效果是一樣的。事實(shí)上,Append方法只適用于那些沒有索引的表,這種沒有索引的表并不十分有用因而通常不創(chuàng)建這種表。幾乎任何情況下我們都是用Insert方法來插入記錄。

  用戶在插入記錄時一般可以采用兩種方式插入:逐步插入即首先建立一條空記錄,然后再填充記錄的各個字段,最后再將記錄寫回到磁盤,共分三個獨(dú)立的操作步驟;而使用InsertRecord方法便可以一次將插入記錄的操作完成。

  14.7.1 逐步插入方法

  逐步插入方法分為三個明確的步驟:先調(diào)用TTable部件的Insert方法在TTable中創(chuàng)建一條新的空記錄,然后填充該記錄的各個字段,最后調(diào)用post方法把新記錄寫到磁盤上的實(shí)際數(shù)據(jù)庫文件中,在填充并傳送記錄以前,考慮插入記錄到表中的什么位置是毫無意義的,假設(shè)插入的表是有索引的,在調(diào)用post方法時,Delphi會自動地把插入的新記錄按照索引順序插入到表中的正確位置。如果插入的表中沒有索引,那么新記錄將插入到當(dāng)前指針?biāo)谟涗浀暮竺妗?/P>

  因此,采用逐步插入方法插入記錄的程序代碼一般如下形式:

  With Table do

  begin

  Insert; {插入一條空白記錄}

  <填充該記錄的各個字段>

  post; {將插入的記錄寫回到磁盤文件}

  end;

  對于沒有索引的數(shù)據(jù)庫表,可以用Append方法替代Insert方法把新記錄插入到表的尾部。

  14.7.2 調(diào)用InsertRecord插入記錄

  對于簡單的應(yīng)用程序,Delphi允許用戶用一條語句插入一個新記錄,而且這個新記錄可以帶有任意多個新字段值。InsertRecord方法把新記錄中字段的賦值語句和psot方法調(diào)用組合進(jìn)一條語句中。

  InsertRecord方法把記錄的各個字段值組合成一個字段值數(shù)組作為它的唯一參數(shù)。在字段值數(shù)組中,可以為插入的記錄的每個字段提供一個字段值,或從最左一列開始依次為任意多個字段賦值。也就是說用戶可以從表的最左邊一列起, 把多個列的值同時傳遞給InsertRecord,直到所有字段都被賦值。用戶也可以省略后面的字段,InsertRecord會用空值填充這些沒有賦值的字段。用戶還可以對那些明確希望用空值填充的字段傳遞保留字NIL來標(biāo)明該字段為空。

  如我們希望在Customer.DB表中插入一條記錄,可以用下面的代碼來實(shí)現(xiàn):

  InsertRecord(['2000',NIL,NIL,NIL]);

  在上面的程序代碼中,我們只填充了四個字段:CustNo、Company、Add1 、 Add2 。InsertRecord會自動將其它字段賦以空值。

  例14.7 在這個例子中,我們在CustNo.DB表中插入和刪除記錄,都是在程序中完成這類操作的,而不再是使用DBD或數(shù)據(jù)瀏覽部件完成。

  插入/刪除記錄

  程序清單:

  unit tt;

  interface

  uses

  SysUtils, Windows, Messages, Classes, Graphics, Controls,

  StdCtrls, Forms, DBCtrls, DB, DBGrids, Buttons, DBTables, Grids,

  ExtCtrls,Mask,Dialogs;

  type

  TForm1 = class(TForm)

  DBGrid1: TDBGrid;

  DBNavigator: TDBNavigator;

  Panel1: TPanel;

  DataSource1: TDataSource;

  Panel2: TPanel;

  customerTable: TTable;

  BitBtn1: TBitBtn;

  Label1: TLabel;

  Label2: TLabel;

  BitBtn2: TBitBtn;

  BitBtn3: TBitBtn;

  CustNoEdit: TEdit;

  CompEdit: TEdit;

  procedure FormCreate(Sender: TObject);

  procedure BitBtn2Click(Sender: TObject);

  procedure BitBtn3Click(Sender: TObject);

  procedure FormActivate(Sender: TObject);

  private

  { private declarations }

  public

  { public declarations }

  end;

  var

  Form1: TForm1;

  implementation

  {$R *.DFM}

  procedure TForm1.FormCreate(Sender: TObject);

  begin

  customerTable.Open;

  end;

  procedure TForm1.BitBtn2Click(Sender: TObject);

  begin

  If (Length(CustNoEdit.text)=0)and

  (Length(CompEdit.text)=0)

  then

  MessageDlg('沒有輸入新記錄的字段值!',mtError,[mbCancel],0)

  else

  with customerTable do

  begin

  IndexFieldNames:='CustNo';

  If FindKey([CustNoEdit.text]) then

  MessageDlg('已經(jīng)存在這條記錄!',mtError,[mbCancel],0)

  else

  InsertRecord([StrToInt(CustNoEdit.text),CompEdit.text,nil]);

  CustNoEdit.text:=' ';

  CompEdit.text:=' ';

  end;

  end;

  procedure TForm1.BitBtn3Click(Sender: TObject);

  begin

  If (Length(CustNoEdit.text)=0)and

  (Length(CompEdit.text)=0)

  then

  MessageDlg('沒有輸入刪除的記錄的字段值!',mtError,[mbCancel],0)

  else

  with customerTable do

  begin

  IndexFieldNames:='CustNo';

  If FindKey([CustNoEdit.text]) then

  begin

  If MessageDlg('你確定要刪除這條記錄嗎?',mtConfirmation,

  [mbYes,mbno],0)=mrYes then Delete;

  end

  else

  MessageDlg('沒有你要刪除的記錄!',mtError,[mbCancel],0);

  CustNoEdit.text:=' ';

  CompEdit.text:=' ';

  end;

  end;

  procedure TForm1.FormActivate(Sender: TObject);

  begin

  CustNoEdit.setfocus;

  end;

  end.

  相關(guān)推薦:2010年9月計算機(jī)等級考試試題及答案解析專題
       預(yù)告:名師解析2010年9月計算機(jī)等級考試試題答案
       2010年9月計算機(jī)等級考試成績查詢時間及入口
       2010年9月計算機(jī)等考成績查詢短信免費(fèi)提醒開通
文章搜索
計算機(jī)等級考試欄目導(dǎo)航
版權(quán)聲明:如果計算機(jī)等級考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請與我們聯(lián)系800@exam8.com,我們將會及時處理。如轉(zhuǎn)載本計算機(jī)等級考試網(wǎng)內(nèi)容,請注明出處。