用SQL语句就可以。 用adoquery,为adoquery.sql赋值就可以,如下: adoquery.sql.add('selcet * from Tablename where 编号='' and 姓名=''......')
我的实现方法,仅共借鉴var sSQL,sWhere: String; isEdit: Boolean; isAnd: String; procedure isWhere; begin if isAnd='' then isAnd:=' where ' else isAnd:=' and '; end; begin try DBGrid1.DataSource:=nil; sSQL:='select * from arch ';if Trim(Edit5.Text)<>'' then begin isWhere; sWhere:=sWhere+isAnd+' username like '+TCommon.AddYH('%'+Trim(Edit5.Text)+'%'); end; if Trim(Edit7.Text)<>'' then begin isWhere; sWhere:=sWhere+isAnd+' usercardid like '+TCommon.AddYH('%'+Trim(Edit7.Text)+'%'); end; if Trim(Edit8.Text)<>'' then begin isWhere; sWhere:=sWhere+isAnd+' userAddr like '+TCommon.AddYH('%'+Trim(Edit8.Text)+'%'); end; if Trim(Edit9.Text)<>'' then begin isWhere; sWhere:=sWhere+isAnd+' userphone like '+TCommon.AddYH('%'+Trim(Edit9.Text)+'%'); end; if Trim(Edit12.Text)<>'' then begin isWhere; sWhere:=sWhere+isAnd+' capacity='+chr(39)+Trim(Edit12.Text)+chr(39); end; if Trim(Edit28.Text)<>'' then begin isWhere; sWhere:=sWhere+isAnd+' sectionid='+chr(39)+Trim(Edit28.Text)+chr(39); end; if Trim(Edit27.Text)<>'' then begin isWhere; sWhere:=sWhere+isAnd+' section='+chr(39)+Trim(Edit27.Text)+chr(39); end; if Trim(Edit31.Text)<>'' then begin isWhere; sWhere:=sWhere+isAnd+' transvol='+chr(39)+Trim(Edit31.Text)+chr(39); end; if Trim(Edit33.Text)<>'' then begin isWhere; sWhere:=sWhere+isAnd+' rack='+chr(39)+Trim(Edit33.Text)+chr(39); end;if StrToInt(WholeParam.OperatorInfo.OperatorRank)>1 then isEdit:=False else isEdit:=True; TDBOperate.GetDataSQL(FDM1.Q1,sSQL+sWhere,isEdit); Panel7.Caption:='共查出 '+Inttostr(FDM1.Q1.Recordcount)+' 条'; FDM1.DS1.DataSet:=FDM1.Q1; DBGrid1.DataSource:=FDM1.DS1; Except end;
下面的方法可以的: with adoquery1 do begin close; sql.clear; sql.add('select * from 表名 where (姓名=:name)and(编号=:code)'); parameters.parametebyname('name').value:=一个来源值;//当然,你也可以用静态的SQL语句; parameters.parametebyname('code').value:=另一个来源值; open; end;
组合查询,加%就是模糊查询procedure TForm11.Button1Click(Sender: TObject); var sqlstr:string; begin sqlstr:='select * from hjgl.jbqk where (1=1)'; if edit1.Text <>'' then sqlstr:=sqlstr+'and (jb_name='''+edit1.text+''')'; if edit3.text<>'' then sqlstr:=sqlstr+'and (jb_jg='''+edit3.text+''')'; if combobox1.Text<>'' then sqlstr:=sqlstr+'and (jb_sex='''+combobox1.text+''')' ; ADOQuery1.Close ; ADOQuery1.SQL.Clear ; ADOQuery1.SQL.Add(sqlstr); ADOQuery1.Open ;
组合查询,加%就是模糊查询 sqlstr:='select * from hjgl.jbqk where (1=1)'; if edit1.Text <>'' then sqlstr:=sqlstr+'and (jb_name='''+edit1.text+''')'; if edit3.text<>'' then sqlstr:=sqlstr+'and (jb_jg='''+edit3.text+''')'; if combobox1.Text<>'' then sqlstr:=sqlstr+'and (jb_sex='''+combobox1.text+''')' ; ADOQuery1.Close ; ADOQuery1.SQL.Clear ; ADOQuery1.SQL.Add(sqlstr); ADOQuery1.Open ;
用的是什么数据库?
用adoquery,为adoquery.sql赋值就可以,如下:
adoquery.sql.add('selcet * from Tablename where 编号='' and 姓名=''......')
isEdit: Boolean;
isAnd: String;
procedure isWhere;
begin
if isAnd='' then isAnd:=' where ' else isAnd:=' and ';
end;
begin
try
DBGrid1.DataSource:=nil;
sSQL:='select * from arch ';if Trim(Edit5.Text)<>'' then
begin
isWhere;
sWhere:=sWhere+isAnd+' username like '+TCommon.AddYH('%'+Trim(Edit5.Text)+'%');
end;
if Trim(Edit7.Text)<>'' then
begin
isWhere;
sWhere:=sWhere+isAnd+' usercardid like '+TCommon.AddYH('%'+Trim(Edit7.Text)+'%');
end;
if Trim(Edit8.Text)<>'' then
begin
isWhere;
sWhere:=sWhere+isAnd+' userAddr like '+TCommon.AddYH('%'+Trim(Edit8.Text)+'%');
end;
if Trim(Edit9.Text)<>'' then
begin
isWhere;
sWhere:=sWhere+isAnd+' userphone like '+TCommon.AddYH('%'+Trim(Edit9.Text)+'%');
end;
if Trim(Edit12.Text)<>'' then
begin
isWhere;
sWhere:=sWhere+isAnd+' capacity='+chr(39)+Trim(Edit12.Text)+chr(39);
end;
if Trim(Edit28.Text)<>'' then
begin
isWhere;
sWhere:=sWhere+isAnd+' sectionid='+chr(39)+Trim(Edit28.Text)+chr(39);
end;
if Trim(Edit27.Text)<>'' then
begin
isWhere;
sWhere:=sWhere+isAnd+' section='+chr(39)+Trim(Edit27.Text)+chr(39);
end;
if Trim(Edit31.Text)<>'' then
begin
isWhere;
sWhere:=sWhere+isAnd+' transvol='+chr(39)+Trim(Edit31.Text)+chr(39);
end;
if Trim(Edit33.Text)<>'' then
begin
isWhere;
sWhere:=sWhere+isAnd+' rack='+chr(39)+Trim(Edit33.Text)+chr(39);
end;if StrToInt(WholeParam.OperatorInfo.OperatorRank)>1 then
isEdit:=False
else isEdit:=True;
TDBOperate.GetDataSQL(FDM1.Q1,sSQL+sWhere,isEdit);
Panel7.Caption:='共查出 '+Inttostr(FDM1.Q1.Recordcount)+' 条';
FDM1.DS1.DataSet:=FDM1.Q1;
DBGrid1.DataSource:=FDM1.DS1;
Except
end;
with adoquery1 do
begin
close;
sql.clear;
sql.add('select * from 表名 where (姓名=:name)and(编号=:code)');
parameters.parametebyname('name').value:=一个来源值;//当然,你也可以用静态的SQL语句;
parameters.parametebyname('code').value:=另一个来源值;
open;
end;
var
sqlstr:string;
begin
sqlstr:='select * from hjgl.jbqk where (1=1)';
if edit1.Text <>'' then
sqlstr:=sqlstr+'and (jb_name='''+edit1.text+''')';
if edit3.text<>'' then
sqlstr:=sqlstr+'and (jb_jg='''+edit3.text+''')';
if combobox1.Text<>'' then
sqlstr:=sqlstr+'and (jb_sex='''+combobox1.text+''')' ; ADOQuery1.Close ;
ADOQuery1.SQL.Clear ;
ADOQuery1.SQL.Add(sqlstr);
ADOQuery1.Open ;
sqlstr:='select * from hjgl.jbqk where (1=1)';
if edit1.Text <>'' then
sqlstr:=sqlstr+'and (jb_name='''+edit1.text+''')';
if edit3.text<>'' then
sqlstr:=sqlstr+'and (jb_jg='''+edit3.text+''')';
if combobox1.Text<>'' then
sqlstr:=sqlstr+'and (jb_sex='''+combobox1.text+''')' ; ADOQuery1.Close ;
ADOQuery1.SQL.Clear ;
ADOQuery1.SQL.Add(sqlstr);
ADOQuery1.Open ;