
首先我们需要知道在Access中null和空字符串是不同的,因此如果处理不好该问题就会带来不少麻烦,特别是在混合查询中。
(推荐教程:access数据库学习)
解决方法如下:
var
SQLStr:string;
begin
//
SQLStr := 'select * from ordertb where 1>0';
if Trim(Edit1.Text)<>'' then
SQLStr := SQLStr +' and serialid like :a';
if Trim(Edit2.Text)<>'' then
SQLStr := SQLStr +' and pname like :b';
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add(SQLStr);
if Trim(Edit1.Text)<>'' then
Parameters.ParamByName('a').Value := '%'+Trim(Edit1.Text)+'%';
if Trim(Edit2.Text)<>''then
Parameters.ParamByName('b').Value := '%'+Trim(Edit2.Text)+'%';
Open;
end;
end;或者:
功能介绍:后台功能介绍1.系统管理:(1)基本信息管理包括网站名称,域名,管理员昵称,联系电话,邮箱和网站关键字等等的设置。(2) 密码修改 系统管理员密码修改(3)后台登陆记录查看2.新闻管理:(1)新闻管理包括新闻的修改删除(2)添加新闻可添加文字新闻和图片新闻,采用EWEB编辑器操作简便(3)新闻分类管理可自由的添加和删除新闻分类3.产品管理:(1)管理产品可对数据库现有进行修改和删除(2)
begin
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('select * from ordertb where 1>0');
if Trim(Edit1.Text)<>'' then
SQL.Add(' and serialid like ''%'+Trim(Edit1.Text)+'%''');
if Trim(Edit2.Text)<>''then
SQL.Add(' and pname like ''%'+Trim(Edit2.Text)+'%''');
Open;
end;
end;总结:
将条件为空的字段从查询语句中过滤掉。









