一张表有5个字段,分别为a1,a2,a3,a4 五个字段都可能为空!我用一个DBCombobox作为检索条件,DBCombobox显示的值可能是a1下的,也可能是a2下的,依此类推!那么怎么选出符合条件的记录?
解决方案 »
- delphi全局变量问题
- 用delphi能开发火狐的工具栏么?
- 请教:关于FastReport与Tadoquery联接动态打印报表的几个问题,adoquery需要查询不同的表.
- 正确看待《Delphi高手突破》最后一章的实例 - 很久没提笔了。。。
- 新人问问题哈!不要笑我!
- 如何使得RxDBLookupCombo空白中默认填写下拉框内的第一条记录
- 参与有份 如何改变SQL70的Sort Order ID
- 刚刚工作,要求用delphi完成串口通讯,请高手们指点我一下
- 我用DELPHI写了个像QQ一样的工具,测试服务端怎么办?
- 简单!如何把一个COMBOBOX和LISTBOX中的数据全部取出来?谢谢!
- 想在程序中利用动态链接库播放一段.wav文件,如何实现?
- TClassName.Create(???);
Flitered := true;
refresh;
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('select t_name,t_1,t_2,t_3 from table1');
SQL.Add(' where t_name='+''''+trim(Edit1.text)+'''');
if DBComboBox1.ItemIndex<>-1 then
begin
SQL.Add('and t_1='+''''+trim(DBComboBox1.Text)+''''+' or '+'t_2='+''''+trim(DBComboBox1.Text)+''''+' or '+'t_3='+''''+trim(DBComboBox1.Text)+'''');
end;
open;
end;
可是问题是:我明明判断了搜索t_name的条件,可是查询出来的记录的t_name不为Edit1的值,只是t_1,t_2,t_3满足搜索条件!怎么会这样?
begin
Close;
SQL.Clear;
SQL.Add('select t_name,t_1,t_2,t_3 from table1');
SQL.Add(' where t_name='''+trim(Edit1.text)+'''');
if DBComboBox1.ItemIndex<>-1 then
begin
SQL.Add('and (t_1='''+trim(DBComboBox1.Text)+''' or t_2='''+trim(DBComboBox1.Text)+''' or t_3='''+trim(DBComboBox1.Text)+''')');
end;
open;
end;
你设置两个变量一个是sql语句的单查询:sSql;另外一个是查询条件变量:sSqlWhere
那么你就可以这么写:
……
sSql:='select * from table where 1=1';
sSqlWhere:='and a1='''+utrim(dbcombox.text)+''' or a2='''+utrim(dbcombox.text)+''' or a3='''+utrim(dbcombox.text)+''' or a4='''+utrim(dbcombox.text)+'';
这样就保证了你在满足任何一个条件时都能有正确的sql语句,正确的返回值
可是问题是:我明明判断了搜索t_name的条件,可是查询出来的记录的t_name不为Edit1的值,只是t_1,t_2,t_3满足搜索条件!怎么会这样?
Filter :='a1=''值'' or a2=''值'' or a3=''值'' or a4=''值''';
Flitered := true;
refresh;