14.5 查詢數(shù)據(jù)庫中的記錄
數(shù)據(jù)庫中儲(chǔ)存著大量的數(shù)據(jù)信息,如何充分有效地查詢其中的數(shù)據(jù),對(duì)用戶而言是至關(guān)重要的。如果想查詢數(shù)據(jù)庫,首先要確定要查詢的字段要么是數(shù)據(jù)庫表中的關(guān)鍵字段,要么是輔助索引。如果我們查詢的是Paradox或dBASE數(shù)據(jù)庫系統(tǒng)中的表,這是唯一的選擇。
一般而言,查詢數(shù)據(jù)庫中的記錄的方法有兩種:Gotokey方法和Findkey方法。兩種方法十分相似,主要區(qū)別在于我們?nèi)绾沃付ú檎抑。這兩種方法的思想是在指定列(字段)中尋找指定的查找值,如果在數(shù)據(jù)庫表中找到了這個(gè)值,表中的記錄指針便指向該記錄,這樣我們便查詢到了我們需要的記錄,進(jìn)而可以訪問找到的記錄中的各項(xiàng)數(shù)據(jù)。
14.5.1 使用GotoKey方法查找數(shù)據(jù)記錄
使用Gotokey方法查詢數(shù)據(jù)庫中的記錄的具體步驟如下:
1、確保要查找的字段是關(guān)鍵字或已經(jīng)為它定義了輔助索引,并保證TTable部件的屬性列表中有關(guān)鍵字段名或輔助索引名。
2、通過調(diào)用GotoKey方法,把要查找的TTable部件置成查找模式。
3、把查找值送進(jìn)被查找的Field的查找緩沖區(qū)。
4、調(diào)用TTable部件的GotoKey方法,并測(cè)試它的返回值判斷查找是否成功。
如果查找成功,GotoKey返回一個(gè)True值,并且表中的記錄指針指向找到的記錄。如果查找失敗,GotoKey返回False,表中的記錄指針不發(fā)生變化。
在這里要注意的是如何給Field的查找緩沖區(qū)賦值,我們知道字段對(duì)象是不可見的對(duì)象,它們沒有自己的名字,在大多數(shù)情況下,要使用TTable部件的FieldByName 方法到字段列表中查找字段對(duì)象以便為它賦值。但字段緩沖區(qū)也是沒有名字的,當(dāng)TTable部件處于查找模式時(shí),我們只要把查找值賦給字段對(duì)象的AsString屬性就可以了。AsString的作用不只是它的表面意思。它是一個(gè)轉(zhuǎn)換屬性,任何賦給字段對(duì)象的AsString屬性的字符串都將轉(zhuǎn)換成該字段對(duì)象應(yīng)于數(shù)據(jù)庫表中的字段的數(shù)據(jù)類型。當(dāng)然AsString不能將查找值轉(zhuǎn)換成BLOB、Bytes、Memo和Graphic類型的數(shù)據(jù),用戶一般也不會(huì)查找這種數(shù)據(jù)類型的字段。
下面便是說明使用Gotokey方法查找數(shù)據(jù)記錄的例子。
例14.3 當(dāng)用戶在Edit1部件中輸入客戶號(hào)碼并單擊查找按鈕,程序便開始在Table1中查找這個(gè)客戶號(hào)。如果查找成功,查找信息“查找成功”便會(huì)顯示在標(biāo)簽Label1上,被查詢到的客戶的電話號(hào)碼顯示在標(biāo)簽Label2上。表中的記錄指針將轉(zhuǎn)移到該客戶記錄處。并且在網(wǎng)格DBGrid1中以高亮度顯示這一條記錄。
查詢數(shù)據(jù)庫中的記錄
下面的程序清單是查詢按鈕上的OnClick事件的處理程序,它是使用Gotokey方法查找數(shù)據(jù)庫中的記錄的。
procedure TForm1.Button1OnClick(Sender:TObject);
begin
with Table1 do
begin
Label1.Caption:=' ';
Label1.Caption:=' ';
IndexFieldName:='CustNo';
setkey;
FieldByName('CustNo').AsString:=Edit1.Text;
If GotoKey then
begin
Label1.Caption:='查找成功';
Label1.Caption:=FieldByName('Phone').AsString;
end;
else
Label1.Caption:='查找失敗';
end;
查詢數(shù)據(jù)庫中的記錄
相關(guān)推薦:2010年9月計(jì)算機(jī)等級(jí)考試試題及答案解析專題北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |