15.4.2.2 查找數(shù)據(jù)庫表中的記錄
如果想查找數(shù)據(jù)庫表中的記錄,必須想指定查找記錄的一些字段的字段值,然后在表中進行檢索,檢索出與查找值相匹配的記錄來。如果我們是在Paradox或dBASE數(shù)據(jù)庫中的表中查找記錄,那么查找值所對應(yīng)的字段必須是表中的關(guān)鍵字段或輔助索引字段。如果查找SQL數(shù)據(jù)庫服務(wù)器中的表,那么查找值必須是表的IndexFieldNames屬性中指定的字段。
Delphi提供了兩種方式在數(shù)據(jù)庫表中查找記錄:Goto方式和Find方式。這兩種方式十分相似,它們的主要區(qū)別在于為查找指定查找值的方法不一樣。
使用Goto方式進行數(shù)據(jù)查找使用的方法有SetKey方法、GotoKey方法和GotoNearest方法。其實際步驟如下:
①確保要查找的字段是關(guān)鍵字段或輔助索引字段。
、谡{(diào)用SetKey方法把與表對應(yīng)的TTable部件置成查找狀態(tài)。
③把查找值賦給相應(yīng)的字段。
④調(diào)用GotoKey方法,并測試它的返回值檢驗查找是否成功。
假設(shè)Table1對應(yīng)的表中第一個字段是關(guān)鍵字段,Edit1是應(yīng)用窗體中的一個編輯框,用戶可以通過Edit1輸入查找值。下面的代碼將通過Goto方式進行查找。
Table1.SetKey; {將Table1置成查找狀態(tài)}
Table1.Field[0].AsString := Edit1.Text; {指定查找值}
Table1.GotoKey; {進行查找}
上面最后一行代碼是根據(jù)用戶指定的查找值,在表中執(zhí)行查找。查找的結(jié)果有兩種,也許成功也許失敗,這是由調(diào)用GotoKey方法之后返回的布爾值來決定,如果返回True,那么查找成功,并且記錄指針會指向與查找值匹配的記錄,如果返回Fale,那么查找失敗,記錄指針的位置不發(fā)生變化。下面的代碼可以測試調(diào)用GotoKey方法之后的返回值,告知用戶查找是否成功。
Table1.SetKey;
Table1.Field[0].AsString:= 'Smith';
If not Table1.GotoKey then
ShowMessage('記錄沒找到')
在這一段代碼中,如果在表中沒有找到第一個字段值為Smith的記錄,該應(yīng)用程序會彈出一個對話框告知用戶“記錄沒有找到”。
如果在表中存在多個關(guān)鍵字段或輔助索引中包含多個字段時,你在進行查找時,只想為第一個字段指定查找值,那么必須要設(shè)置TTable部件的KeyFieldCount的屬性值為1。如果想為多個字段指定查找值,只能為相鄰的字段指定查找值,例如輔助索引中共有三個字段,那么我們只能為第一個字段、第一和第二個字段、第一和第二以及第三個字段指定查找值,而不能為第一和第三個字段指定查找值。
GotoNearest方法的使用與GotoKey方法完全一樣,只是它用于不精確查找,它不要求查找結(jié)果與查找值精確匹配,當表中有與查找值精確匹配的記錄時,它將記錄指針移到該記錄處,當表中沒有與查找值精確匹配的記錄時,它會查找出與查找值最接近的記錄,并將記錄指針移到該記錄處。
相關(guān)推薦:2010年9月計算機等級考試試題及答案解析專題北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |