下面便是說明使用Gotokey方法查找數據記錄的例子
例 當用戶在Edit部件中輸入客戶號碼並單擊查找按鈕程序便開始在Table中查找這個客戶號如果查找成功查找信息查找成功便會顯示在標簽Label上被查詢到的客戶的電話號碼顯示在標簽Label上表中的記錄指針將轉移到該客戶記錄處並且在網格DBGrid中以高亮度顯示這一條記錄
查詢數據庫中的記錄
下面的程序清單是查詢按鈕上的OnClick事件的處理程序它是使用Gotokey方法查找數據庫中的記錄的
procedure TFormButtonOnClick(Sender:TObject)
begin
with Table do
begin
LabelCaption:= ;
LabelCaption:= ;
IndexFieldName:=CustNo;
setkey;
FieldByName(CustNo)AsString:=EditText;
If GotoKey then
begin
LabelCaption:=查找成功;
LabelCaption:=FieldByName(Phone)AsString;
end;
else
LabelCaption:=查找失敗;
end;
查詢數據庫中的記錄
使用FindKey方法查找數據庫中的記錄
雖然使用上面的Gotokey方法在數據庫中查找記錄效果不錯但是Delphi 還提供了一種更加容易的查找方法這就是Findkey方法兩種方法雖然很相似但是Findkey方法更簡單明了一些
例 我們可以使Findkey方法代替上面例子中的處理程序下面是程序代碼
procedure TFormButtonOnClick(Sender:TObject)
var
SeekValue:string;
begin
with Table do
begin
LabelCaption:= ;
LabelCaption:= ;
IndexFieldName:=CustNo;
SeekValue:=EditText;
If FindKey([SeekValue]) then
begin
LabelCaption:=查找成功;
LabelCaption:=FieldByName(Phone)AsString;
end;
else
LabelCaption:=查找失敗;
end;
Findkey方法和Gotokey方法的根本區別在於查找值要作為參數傳遞給Findkey 函數而GOtokey是不帶參數的它假定用戶已經把查找值賦給了代表著被查找到的字段的查找緩沖區
Findkey接受的參數是放在方括號中的是用逗號分開的查找值數組數組中的每一個值都對應於特定列的查找值即參數中允許有多個查找值Findkey 允許用戶同時查找數據庫表中的多個列上面的程序清單中的Findkey函數只接受了變量Seekvalue這一個查找值這個查找值對應表中的字段CustNoCustNo是表中的關鍵字段如果要同時查找表中的多個字段必須把要查找的多個字段名賦給TTable部件的IndexFieldName屬性並用逗號分開各字段然後把每個字段的查找值賦給Findkey的參數數組中
利用GotoNearest和FindNearest執行不精確查找
在我們上面討論的查找中要麼查找成功要麼查找失敗因為我們查找的是特定查找值的一個精確匹配值Delphi還提供了一種查找方法即不精確查找這樣的查找絕對不會失敗它總是給用戶查找出一個結果來也許這結果並不是用戶需要的但這個查找出來的結果是最接近用戶要求的在Delphi中是利用GotoNearest和FineNearest兩種方法來執行不准確查找的它們總是從數據庫中查找出與查找值最接近的匹配值如果它們查找到與查找值精確匹配的值那當然最好不過了如果他們找不到精確匹配的值它們就會把與用戶指定的查找值最接近的記錄提交給用戶
GotoNearest的使用方法和Gotokey一樣FindNearest的使用方法和Findkey一樣跟Gotokey一樣使用GotoNearest時必須要把查找值賦給字段的查找緩沖區兩者的不同之處在於查找值的說明方式不一樣使用GotoNearest時說明的查找值可以是完整的也可以是不完整的如果要對Dunteman進行不精確查找在給字段的查找緩沖區賦查找值時可以使用DuntemanDun或者`Du作為查找值這樣查找出來的結果會盡可能地接近這個值的
如果沒有找到與用戶指定的查找值精確匹配的記錄Delphi會調整記錄指針並停留在與查找值最接近的第一個記錄上例如如果查找`Dunteman時沒有找到精確匹配的值記錄指針可能會停留在`Dunwoody上或者停留在更遠一些的Event上如果查找Du 沒有找到精確匹配的值記錄指針可能停留在Duncan上甚至Dunteman之前總之Delphi會自己地調整記錄指針使之指向最接近查找值的記錄並將該記錄作為查找的結果提交給用戶
GotoNearest和FindNearest都返回一個Boolean值以表明查找是否成功它們一般都是成功的它們總是要把記錄指針移到某處
下面的例子是用GotoNearest方法進行不精確查找
例 創建好的窗體在編輯框中輸入一個不完整的客戶所在的公司名稱並且按不精確查找按鈕然後觀察一下查找的結果並注意記錄指針指向那一條記錄反復試驗幾次便會理解GotoNearest是如何工作的
返回目錄DELPHI基礎教程
編輯推薦
Java程序設計培訓視頻教程
JEE高級框架實戰培訓視頻教程
Visual C++音頻/視頻技術開發與實戰
Oracle索引技術
ORACLEG數據庫開發優化指南
Java程序性能優化讓你的Java程序更快更穩定
C嵌入式編程設計模式
Android游戲開發實踐指南
[] [] [] []
From:http://tw.wingwit.com/Article/program/Delphi/201311/25172.html