GRIDB的数据源为一QUERY
内容大体是这样的:
Code Name
1001 abc
2202 dfdf
2303 dfsda要求是这样的, 在EDIT中输入1,DBGRID的记录移到1开头的第一条记录,再输入0,移到10开头的记录。若输入2,移到2开头的记录。
就是移动到'select * from tcode where code like ''%'+edit1.text+''''对应的记录。(注意,是移到到该记录,而不是查询出那条记录)这样怎么实现??!在线等!!!
内容大体是这样的:
Code Name
1001 abc
2202 dfdf
2303 dfsda要求是这样的, 在EDIT中输入1,DBGRID的记录移到1开头的第一条记录,再输入0,移到10开头的记录。若输入2,移到2开头的记录。
就是移动到'select * from tcode where code like ''%'+edit1.text+''''对应的记录。(注意,是移到到该记录,而不是查询出那条记录)这样怎么实现??!在线等!!!
begin
DM.gongdanADOQuery.Active := False;
DM.gongdanADOQuery.SQL.Clear;
if sCheckBox.Checked then
DM.gongdanADOQuery.SQL.Add('select * from gongdan where username like '+''''+'%'+Edit10.Text+'%'+'''')
else
DM.gongdanADOQuery.SQL.Add('select * from gongdan where username like '+''''+Edit10.Text+'%'+'''');
DM.gongdanADOQuery.Prepared;
DM.gongdanADOQuery.Active := True;
ClearEdit(Sender);
if not DM.gongdanADOQuery.IsEmpty then
EditToDataSource(Sender);
end;
procedure TYWSForm.EditToDataSource(Sender: TObject);
begin
if DM.gongdanADOQuery['id']<>Null then
Edit0.Text := DM.gongdanADOQuery['id'];
if DM.gongdanADOQuery['waterno']<>null then
Edit1.Text := DM.gongdanADOQuery['waterno'];
if DM.gongdanADOQuery['username']<>Null then
Edit2.Text := DM.gongdanADOQuery['username'];
if DM.gongdanADOQuery['py']<>Null then
EditPY.Text := DM.gongdanADOQuery['py'];
end;
试试下面的代码吧:
procedure TYWSForm.Edit10Change(Sender: TObject);
var
i:integer;
begin
i:=length(Edit10.Text);
Query1.First;
while not Query1.Eof do
begin
if Copy(Query1['code'],1,i)=Edit10.Text then
ShowMessage('OK')
else
Query1.Next;
end;
end;
procedure TForm1.Button1Click(Sender:Tobject);
begin
with Query1 do
IndexFieldName:='Name';
FindNearest([Edit1.Text]);
end;
if not Locate('nian;yue',VarArrayOf([aYear,aMonth]),[loCaseInsensitive])
//Query1选出符合的记录,并指向第一条记录2)query2.lacate('code,name',VarArrayof([Query1['code'],Query1['name']]),[])/
//Query2来定位
duncankof说的indexfieldnam好像只有table有,我的是QUERY.
还有其他人说的,如果只用一个的话不能实现模糊查找,我要的是在文本框onchage的时候才找!所以得用两个QUERY.不知大家还有没有什么好办法.