我想还是用sql语句更好: query1.close; query1.sql.clear; query1.sql.add('select * from 表名 where 条件 '); query1.open;
with CustTable do Locate('Company;Contact;Phone', VarArrayOf(['Sight Diver', 'P', '408-431-1000']), [loPartialKey]);然后用编辑命令就行了!
如果是这样查询后呢: ADOQuery1.SQL.Add('select count(*) from 用户'); ADOQuery1.SQL.Add('where 日期='+#39+myDate+#39); ADOQuery1.Open; 我想就在这里修改,请问怎么用locate??????
我做了个过程,是定位职工编号的,效果很号procedure TForm1.BitBtn2Click(Sender: TObject);//定位按钮 begin qr1:=fmd.Query_fegz; bh1:=edit1.Text; gotobh(qr1,bh1);//调用过程 end;procedure gotobh(qr:tquery;bh:string);//定位过程申明在public后 var //全局变量 qr1:tquery; //qr1是 职工编号定位用数据集 bh1:string; //bh1是 职工编号定位用procedure gotobh(qr:tquery;bh:string); //bh1是 职工编号定位用 begin with qr do begin DisableControls; first; while fieldbyname('zhigbh').asinteger<>strtoint(bh) do if not eof then next else begin showmessage('没有你要查询的记录,请确认编号是否正确'); break; end; EnableControls; end; end;
反正locate与find是有差别的,,看看帮助吧
最好用Sql语句 record:integer; with query1 do begin close; sql.clear; sql.add(' select table.* from tablename where ......'); prepare; end; end; record:=query1.recordcount; if record<>0 then begin query1.first; ...... end;
1. 用table,简单实用 Table1.IndexFieldNames:='aa;bb;cc'; Table1.FindKey([12,'we',2345]); aa bb cc是字段名,[ ]中的是相应的符合条件的值 2. Table1.setkey; Table1.FieldByName('aa').AsInteger:=12; Table1.GotoKey; 3. Query1.locate('aa;bb;cc',varArrayOf([12,'we',2345]),[loPartialKey]); 4. Query1.Sql.Add('select aa,bb,cc from myTable where aa=12 and bb='we' and cc=2345');这些够了吧?
Locate很好用的,为什么还要自己处理呢? 查询Company='Sight Diver',Contact='P',Phone='408-431-1000'的记录, eg: dataset.Locate('Company;Contact;Phone', VarArrayOf(['Sight Diver', 'P', '408-431-1000']), []); while not dataset.eof then begin .... dataset.next; end;
query1.close;
query1.sql.clear;
query1.sql.add('select * from 表名 where 条件 ');
query1.open;
Locate('Company;Contact;Phone', VarArrayOf(['Sight Diver', 'P', '408-431-1000']), [loPartialKey]);然后用编辑命令就行了!
ADOQuery1.SQL.Add('select count(*) from 用户');
ADOQuery1.SQL.Add('where 日期='+#39+myDate+#39);
ADOQuery1.Open;
我想就在这里修改,请问怎么用locate??????
begin
qr1:=fmd.Query_fegz;
bh1:=edit1.Text;
gotobh(qr1,bh1);//调用过程
end;procedure gotobh(qr:tquery;bh:string);//定位过程申明在public后
var //全局变量
qr1:tquery; //qr1是 职工编号定位用数据集
bh1:string; //bh1是 职工编号定位用procedure gotobh(qr:tquery;bh:string); //bh1是 职工编号定位用
begin
with qr do
begin
DisableControls;
first;
while fieldbyname('zhigbh').asinteger<>strtoint(bh) do
if not eof then next
else
begin
showmessage('没有你要查询的记录,请确认编号是否正确');
break;
end;
EnableControls;
end;
end;
record:integer;
with query1 do
begin
close;
sql.clear;
sql.add(' select table.* from tablename where ......');
prepare;
end;
end;
record:=query1.recordcount;
if record<>0 then
begin
query1.first;
......
end;
Table1.IndexFieldNames:='aa;bb;cc';
Table1.FindKey([12,'we',2345]);
aa bb cc是字段名,[ ]中的是相应的符合条件的值
2. Table1.setkey;
Table1.FieldByName('aa').AsInteger:=12;
Table1.GotoKey;
3. Query1.locate('aa;bb;cc',varArrayOf([12,'we',2345]),[loPartialKey]);
4. Query1.Sql.Add('select aa,bb,cc from myTable where aa=12 and bb='we' and cc=2345');这些够了吧?
查询Company='Sight Diver',Contact='P',Phone='408-431-1000'的记录,
eg:
dataset.Locate('Company;Contact;Phone', VarArrayOf(['Sight Diver', 'P', '408-431-1000']), []);
while not dataset.eof then
begin
....
dataset.next;
end;