可能我没有把问题说清楚。如果只是以一个字段来查找那倒没有什么困难的了——有这么多朋友提出了好办法。
可惜,我真正的问题是:
用四个字段进行查询。GOGONEARST,FINDNEARST全都不灵。
如:
Query1.locate('Name;Sex;Age;Source',vararrayof['txmaster','man','25','12'],[]);
如何在下列数据中找到正确的?(第1条记录)
Name Sex Age Source ……
txmaster man 25 10
txmaster man 25 15
txmaster man 25 20
txmaster man 25 25
救救我吧!
var
I, J, T: Integer;
begin
I := StrToIntDef(Edit1.Text, 0);
T := 0;
Table1.First;
while not Table1.Eof do begin
J := Table1.FieldByName('Field1').AsInteger;
if Abs(J - I) < (T - I) then T := J;
Table1.Next;
end;
Caption := IntToStr(T);
end;
按照你的提法,首先你应当用程序代码控制你的规则,也就是:
(假设‘12’是字符型)
tmptxt := edit1.txt (用户输入)
if copy(length(tmptxt),tmptxt) < '3' then
begin
tmptxt := copy(1,tmptxt) + '0';
table1.gotokey(tmptxt);
end else
begin
...
end;