findkey 和 findnearest的使用方法。谢谢(高手的简单问提)。。(头疼)(150分)

  • 主题发起人 主题发起人 gzlitao
  • 开始时间 开始时间
G

gzlitao

Unregistered / Unconfirmed
GUEST, unregistred user!
可以说详细些吗?
库是C:/lion/lion.dbf(vfox5.0)
我想用findnearest查找‘用户姓名’的‘张三’
或在edit.text中输入姓名。
那是如和写呢?


谢谢
 
a example

procedure TForm1.FormActivate(Sender: TObject);

begin
Table1.DatabaseName := 'DBDemos';
Table1.TableName := 'Customer.db';
Table1.Active := True;
Table1.IndexName := 'ByCompany';
end;

procedure TForm1.Edit1Change(Sender: TObject);

begin
Table1.FindNearest([Edit1.Text]);
end;

对于Pardox表和DBase,FoxBase,FoxPro的表
必须用索引字段
 
好像要用到setkey函数吧

 
用findkey,findnearest,“用户姓名”要有索引才行

用Locate查找则不必有索引
 
我自己试过下面的语句

procedure Tform1.SpeedButton5Click(Sender: TObject);
begin

Table1.IndexFieldNames:='lion';
Table1.FindKey([edit2.text]);

end;

就出现以下的错误。
project lion.exe raised exception class EDatabseerror with
message 'rable1:no index for fields 'lion''.process stopped.
use setep or run to continue.
那为可以告诉我哪儿错了。

谢谢-----(一个初学的,超级菜鸟).

 
>>
最近,大富翁的邮件老是寄不到,
不知是什么事?
 
lion字段没有建立索引
请先建立索引
 
Table1.IndexFieldNames:='lion';
不是已经建立了索引?那怎么建立呢?
locate是怎么用?
 
Implements a virtual method for searching a dataset for a specified record and makes that record the active record.

function Locate(const KeyFields: string; const KeyValues: Variant; Options: TLocateOptions): Boolean; virtual;

Description

This function returns False, indicating that a matching record was not found and the cursor is not repositioned.

Descendant classes override this method so that it locates the record where the fields identified by the comma-delimited string KeyFields have the values specified by the Variant or Variant array KeyValues. Options indicates whether the search is case insensitive and whether partial matches are supported. Locate should return True if a record is found that matches the specified criteria and the cursor repositioned to that record.

Options取值如下
loCaseInsensitive Key fields and key values are matched without regard to case.
loPartialKey Key values can include only part of the matching key field value; for example, 'HAM' would match both 'HAMM' and 'HAMMER.'
 
wrench老兄可不可以说慢一点,说清楚一点。
我看不明白啊?(很笨的人)能给个比例吗?万分感谢。
 
明天下午回答你,可以吗?我要查资料(我很少用FindKey系列,我一般都用Locate.
 
Locate也好啊.
能查找就行.
请多说明。
谢谢了,前卫兄
 
table1.locate('用户姓名',‘张三’,[]);

table1.locate('用户姓名',edit1.text,[]);
 
To gzlitao:
我正在写findkey,findnearest,locate,lookup的详细用法,请稍候.....
 
delphi 1 一般使用find与goto方法进行数据查找
delphi 2 以后,一般使用locate与lookup进行数据查找。也可以使用
find与goto,当然,他们(find与goto)的限制也比locate等多,比如
find与goto他们查找的字段要被索引(索引要数据库中必须存在,不是直
接在Table1.IndexFieldNames:='lion'设置就了事的),所以推荐使用
locate与lookup。

1。findkey与gotokey:我不熟悉,Sorry {B-(
2. locate与lookup:
原型:
function Locate(const KeyFields:string;const KeyValues:Variant;
Options:TLocateOptions):boolean;
function Lookup(const KeyFields:string;const KeyValues:Variant;
const ResultFields:string):Variant;

Locate与lookup的用法差不多,locate要将光标移动到查到的记录,而
lookup不会。

locate:
KeyFieds是你要查的字段,可以是多个字段,每个字段以‘;’给开。
KeyValues是你要查字段的直,如果是多字段,用
VarArrayOf('field1','field2',....).
Options:是集合,loCaseInsensitive与loPartialKey的任意主组合.
lookup:
KeyFieds,KeyValues同Locate.
ResultFields:就是你希望返回的字段的直.

例见:懶虫
 
又有新问题提啊?
请: 前卫兄再帮一下。
前卫兄私下问你?
可否给你email邮箱地址我呢?
我的是gzlitao@163.net or gzlitao@21cn.com

谢谢

 
多人接受答案了。
 
前卫兄:
是sql&updatesql的问题请快来帮忙。
 
email邮箱地址: shenqw@cmmail.com
 
后退
顶部