小弟求教一个很简单的问题!

yundou 2003-08-18 07:58:41

一张表有5个字段,分别为a1,a2,a3,a4 五个字段都可能为空!我用一个DBCombobox作为检索条件,DBCombobox显示的值可能是a1下的,也可能是a2下的,依此类推!那么怎么选出符合条件的记录?
...全文
22 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
mingjunlee 2003-08-19
  • 打赏
  • 举报
回复

Filter :='a1=''值'' or a2=''值'' or a3=''值'' or a4=''值''';
Flitered := true;
refresh;


diki 2003-08-19
  • 打赏
  • 举报
回复
用两个ComboBox,一个选择字段,一个用来选择值,选择值的窗口随着字段选择的结果改变
idilent 2003-08-19
  • 打赏
  • 举报
回复
跟踪进取看看判断语句执行没有不就可以了?

=====================================================
可是问题是:我明明判断了搜索t_name的条件,可是查询出来的记录的t_name不为Edit1的值,只是t_1,t_2,t_3满足搜索条件!怎么会这样?
kevin218 2003-08-19
  • 打赏
  • 举报
回复
这个一个动态查询的问题。
你设置两个变量一个是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语句,正确的返回值

pengdali 2003-08-18
  • 打赏
  • 举报
回复
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;
samcrm 2003-08-18
  • 打赏
  • 举报
回复
不要用DBComboBox,应该使用5个ComboBox分别对应5个字段,这样程序清晰。
yundou 2003-08-18
  • 打赏
  • 举报
回复
如果我加上一个字段(一共6个字段了),第一个字段用一个Edit1来输入搜索条件!后5个按照上面的要求搜索!我是这样做的:
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满足搜索条件!怎么会这样?
idilent 2003-08-18
  • 打赏
  • 举报
回复
这样好象不行,如果a1下有a,但是要查a2下有a,怎么办?是不是设计的问题?

hch_45 2003-08-18
  • 打赏
  • 举报
回复
Filter :='a1=''值'' or a2=''值'' or a3=''值'' or a4=''值''';
Flitered := true;
refresh;
pengdali 2003-08-18
  • 打赏
  • 举报
回复
select * from 表 where a1='值' or a2='值' or a3='值' or a4='值'

2,495

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧