关于筛选数据的问题!(50分)

  • 主题发起人 主题发起人 回音壁
  • 开始时间 开始时间

回音壁

Unregistered / Unconfirmed
GUEST, unregistred user!
[:D]我想在一个窗体上放几个控件,比喻4个combobox和一个label,实现这样一个功能,
这4个combobox分别和数据库的4个fields关联,每选择一个combobox就对数据库作
一次筛选,然后逐步找到我需要的值出现在label上,请问怎么做?
问题是这4个字段每个字段都有相同的值。用lookupcombobox不行。

请不要告诉我笨办法,我想出来的都是笨办法!!呵呵[:D][:D][:D]
 
动态构造 SQL 后的 where 条件,或用参数。用 query 实现
据说 table 的 filter 只能是很简单的表达式。
 
我忘了,我用的access后台
 
什么样的字段?什么样的表?举个例子!
 
这个不用举例了吧!我不是就一个具体的程序才问各位的!
我只是想找到一个思路!
 
思路,第一个COMBOBOX来自于数据库的某个字段,可以首先过滤付值
用TABEL.FILTER,或者QUERY.SQL : SQL* FROM TABLE1 WHERE FIELDNAME=COMBOB0X1.TEXT
..就这两个办法了,如果存在更为有效的方法,是以数据库结构为基础的,
良好的数据库设计方案,可以让你从理解到编程都节省好多的时间和精力
 
非常感谢你,和我原来想的2个办法中的其中一个一样.我想实在不行,只有这样啦!
哎!没有编程经验的人总是被这样的常规问题难倒!
其实这样的问题打个比方就好象fields a,b,c。 a里包含a1,a2,a3,而a1里也包含a1a,a1b,a1c,
而最终就要得出a1a的值。
 
在每个combobox中的onchange中添加
SQL语句
with query1 do
begin
close;
sql.clear;
sql.add('select fields1 from table1 where fields:=temstr')
parameters.parambyname('temstr'):=combobox1.text;
open;
end;

with query1 do
begin
sql.add('select fields2 from table1 where fields2:=temstr')
parameters.parambyname('temstr'):=combobox2.text;
open;
end;

with query1 do
begin
sql.add('select fields3 from table1 where fields3:=temstr')
parameters.parambyname('temstr'):=combobox3.text;
open;
end;

with query1 do
begin
sql.add('select fields4 from table1 where fields4:=temstr')
parameters.parambyname('temstr'):=combobox4.text;
open;
end;

 
用参数在
onchange事件里写就行了呀,想怎么写都行
 
我觉得可以用combobox的onchange事件和filter属性结合使用可能更方便
 
to yzy25:
我想你的代码得不出我想要的结果值吧!
我的唯一目的是要正确找到我label上显示的值!你说呢?
 
如果通过TParams对象的paramValues属性按名称访问参数.同时指定三个参数的值!
应该可以吧!
 
每选择一个值,就根据选出的数据创建一个view。这样的话应该就有你想要的效果了。
或者在已有的query中继续查询。
用combobox中的onclose触发。
 
to raymondcen:
好主意,但是如何创建view呢?
 
具体我没有实现过。我觉得方法应该跟在delphi中创建表的那些方法差不多。具体可以查一下书。
至于创建view的SQL语句应该是create view viewname as select query
 
我没有在软件公司做过,但是你们应该经常碰到这样的问题啊!怎么会没有实现过呢?
 
我也是最近才开始用delphi的。
目前为止,我还没有在delphi中实现创建表。一般都是先创建好的。
不过试试看下面的办法:
建一个ADOQuery1。
ADOQuery1.Close;
ADOQeury1.SQL.Clear;
ADOQuery1.SQL.Add(create view view1 as select * from tablename where ...);
ADOQuery1.ExecSQL;
试试看吧!可能可以。
 
麻烦楼下的这位兄弟告诉我一个搜索的关键词啊!
 
用SQL和Adoquery控件會很簡單的,你可以搜索一下論壇,以前這方面的討論很多
 
代码如下:
with blueprint_priceQuery do
begin
close;
SQL.Clear;
SQL.Add('select * from blueprint_price ');
SQL.Add('where size:=aa');
Parameters.Refresh;
Parameters.ParamByName('aa').Value:=combobox2.Text;
Prepared;
ExecSQL;

麻烦各位英雄解决啊!
出错:
错误提示:paramters找不到'aa'而我的blueprint_pricequery里有aa呀!

 
后退
顶部