ADOQuery1要通过ADO连接组件连到数据库里,加个按钮,按钮的单击事件: with self.ADOQuery1 do begin Close; SQL.Clear; SQL.Add(' select * from table1 where rake like :a and name like :b and product like :c '); parameters.ParamByName('a').Value:='%'+Trim(edit1.Text)+'%'; parameters.ParamByName('b').Value:='%'+Trim(edit2.Text)+'%'; parameters.ParamByName('c').Value:='%'+Trim(edit3.Text)+'%'; Open; database.ADO_CLIENT.first; end;
假如查空出错的话,可以先判断edit是否为空,修改代码: with self.ADOQuery1 do begin Close; SQL.Clear; SQL.Add(' select * from table1 where 1=1'); if Trim(edit1.Text)<>'' then begin SQL.Add(' and rake like :a' ); parameters.ParamByName('a').Value:='%'+Trim(edit1.Text)+'%'; end; if Trim(edit2.Text)<>'' then begin SQL.Add(' and name like :b '); parameters.ParamByName('b').Value:='%'+Trim(edit2.Text)+'%'; end; if Trim(edit3.Text)<>'' then begin SQL.Add(' and product like :c' ); parameters.ParamByName('c').Value:='%'+Trim(edit3.Text)+'%'; end; Open; self.ADOQuery1.first; end;哈哈,我刚改造出来一个类似的,还挺好使,应该对楼主也有用吧. 第一条回复有个地方忘了修改,就是最后database.ADO_CLIENT.first;哈哈,那是我的代码里的,我是给把程序的数据连接和查询之类的组件都放在了名为database的数据模块里了.
with self.ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add(' select * from table1 where rake like :a and name like :b and product like :c ');
parameters.ParamByName('a').Value:='%'+Trim(edit1.Text)+'%';
parameters.ParamByName('b').Value:='%'+Trim(edit2.Text)+'%';
parameters.ParamByName('c').Value:='%'+Trim(edit3.Text)+'%';
Open;
database.ADO_CLIENT.first;
end;
with self.ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add(' select * from table1 where 1=1');
if Trim(edit1.Text)<>'' then
begin
SQL.Add(' and rake like :a' );
parameters.ParamByName('a').Value:='%'+Trim(edit1.Text)+'%';
end;
if Trim(edit2.Text)<>'' then
begin
SQL.Add(' and name like :b ');
parameters.ParamByName('b').Value:='%'+Trim(edit2.Text)+'%';
end;
if Trim(edit3.Text)<>'' then
begin
SQL.Add(' and product like :c' );
parameters.ParamByName('c').Value:='%'+Trim(edit3.Text)+'%';
end;
Open;
self.ADOQuery1.first;
end;哈哈,我刚改造出来一个类似的,还挺好使,应该对楼主也有用吧.
第一条回复有个地方忘了修改,就是最后database.ADO_CLIENT.first;哈哈,那是我的代码里的,我是给把程序的数据连接和查询之类的组件都放在了名为database的数据模块里了.
如
Create proc OQ_GetOrderInfoTable
@Feilds varchar(1000) = '*',
@table varchar(1000) = '*',
@Where varchar(1000) = 'where 1=1'
asdeclare @tempSQL nvarchar(4000)
----------------------
--省略
----------------------
EXECUTE sp_executesql @tempSQL这样感觉比在delphi里面写好点