在Edit1.OnChange里写: procedure TForm1.Edit1Change(Sender: TObject); var TmpStr:String; begin TmpStr:=Copy(Edit1.Text,3,Length(Edit1.Text)-3); //屏去ABC Query1.Close; Query1.SQL.Text:= 'select * from T where F Like '''+TmpStr+''''; Query1.Open; end;
我是这样写的,但是不行啊,请帮忙看看 procedure TForm_batch.Edit_colorKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); var TmpStr:String; i:integer; begin if key=40 then begin try i:=length(trim(edit_color.text)); TmpStr:=Copy(Edit_color.Text,i,Length(Edit_color.Text)-i); datamodule1.DataSource_platerequire.DataSet:=Query_platerequire; dbgrid2.DataSource:=datamodule1.DataSource_platerequire; with query_platerequire do begin close; databasename:='case'; sql.Clear; sql.Add('select * from platequire'); sql.add('where platerequire Like '+''''+ trim(TmpStr) +''+'%'+''''); prepare; open; end; if dbgrid2.DataSource.DataSet.RecordCount>0 then begin dbgrid2.Visible:=true; dbgrid2.SetFocus; end else begin dbgrid2.Visible:=false; end; except abort; end; end; end;
什么意思啊erp2(天涯劍) ,态度不好
你的思路是正确的,不过这句代码有问题: sql.Add('select * from platequire'); sql.add('where platerequire Like '+''''+ trim(TmpStr) +''+'%'+'''');where之前加一个空格,%之前多了两个分号,这个很容易弄错的。
sql.Add('select * from platequire'$20);//和where之间要加空格 sql.add('where platerequire Like '''+ trim(TmpStr) +'%''');
var namestr:string; lenth:integer; begin lenth:=length(edit.Text); namestr:=copy(edit.Text,4,lenth); query.SQL.Clear; query.SQL.Add('select * from 表名 'where 字段 like "%'+Namestr+'%"'); query.Open; end;现在才发现这个世界比我菜的还真多
函数可以实现
procedure TForm1.Edit1Change(Sender: TObject);
var
TmpStr:String;
begin
TmpStr:=Copy(Edit1.Text,3,Length(Edit1.Text)-3);
//屏去ABC
Query1.Close;
Query1.SQL.Text:=
'select * from T where F Like '''+TmpStr+'''';
Query1.Open;
end;
procedure TForm_batch.Edit_colorKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
TmpStr:String;
i:integer;
begin
if key=40 then
begin
try
i:=length(trim(edit_color.text));
TmpStr:=Copy(Edit_color.Text,i,Length(Edit_color.Text)-i); datamodule1.DataSource_platerequire.DataSet:=Query_platerequire;
dbgrid2.DataSource:=datamodule1.DataSource_platerequire;
with query_platerequire do
begin
close;
databasename:='case';
sql.Clear;
sql.Add('select * from platequire');
sql.add('where platerequire Like '+''''+ trim(TmpStr) +''+'%'+'''');
prepare;
open;
end;
if dbgrid2.DataSource.DataSet.RecordCount>0 then
begin
dbgrid2.Visible:=true;
dbgrid2.SetFocus;
end else
begin
dbgrid2.Visible:=false;
end;
except
abort;
end;
end;
end;
sql.Add('select * from platequire');
sql.add('where platerequire Like '+''''+ trim(TmpStr) +''+'%'+'''');where之前加一个空格,%之前多了两个分号,这个很容易弄错的。
sql.add('where platerequire Like '''+ trim(TmpStr) +'%''');
TmpStr:=Copy(Edit_color.Text,i,Length(Edit_color.Text)-i);
这一句话好像有问题吧,你的字符串长度是I,然后你的copy从第i位开始,那么什么都得不到了啊
namestr:string;
lenth:integer;
begin
lenth:=length(edit.Text);
namestr:=copy(edit.Text,4,lenth);
query.SQL.Clear;
query.SQL.Add('select * from 表名 'where 字段 like "%'+Namestr+'%"');
query.Open;
end;现在才发现这个世界比我菜的还真多
TmpStr:=Copy(Edit_color.Text,i,Length(Edit_color.Text)-i);
这一句话好像有问题吧,你的字符串长度是I,然后你的copy从第i位开始,那么什么都得不到了啊怎么改啊