下面便是说明使用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游戏开发实践指南
[] [] [] []