二次检索(35分全给你)(35分)

  • 主题发起人 主题发起人 初学者1
  • 开始时间 开始时间

初学者1

Unregistered / Unconfirmed
GUEST, unregistred user!
我想做一个能进行二次检索的界面,在form上放一个datasource,adoquery,dbgrid,
edit1,button1,eidt2,button2。假如有一个表table1,tahle1有两个字段:A,B,为简化
起见,只对 A 操作,button1的程序如下
adoquery.close;
adoquery.clear;
adoquery.sql.add('select * from table1 where A=''');
adoquery.sql.add(eidt1.text);
adoquery.open;
请问如何通过button2,edit2,来实现二次检索?


 
在form再放一个adoquery,名为adoquery2
with adoquery2 do
begin
close;
clear;
sql.add('select * from (');
sql.add(adoquery.sql.text);
sql.add(') where ...);
sql.open;
end;
我没试,你试试行否?
 
你的回答理论上可以,就是保存第一次的检索条件,然后再合并条件,我试了一下
不行,可能是别的地方有问题。不过有没有笔者更好的办法?
 
什么数据库?我用SQLServer7
with adoquery2 do
begin
close;
clear;
sql.add('select * from (');
sql.add(adoquery.sql.text);
sql.add(') as a wher ...); // 不加As 我这儿不能运行
// sql.add(') where ...);
sql.open;
end;

 
可以考虑Filter
 
94啊,干吗不FILTER呢?否则只好用临时表了。实际上SELECT ... FROM SELECT 也是
用临时表实现的。
 
用FILTER如何动态处理包含
 
你可以通过 format函数,进行sql语句的动态加载
 
请问filter,format如何实现?
 
to doud:你的可以吗?为什么我的不行?出错信息为:
'line2 :incorrect synatx near 'text''
 
adoquery.close;
adoquery.clear;
adoquery.sql.add('select * from table1 where A=''');
adoquery.open;

然后当你想做二次查询时:
在Button2事件中
AdoQuery.Filtered := false;
//条件二(edit2.text),注意保证传入的值的属性,这里设B是字符串
AdoQuery.Filter := '= '''+edit2.text+'''';
AdoQuery.Filtered := true;
 
to 初学者1:doud的代码中Sql.Add中少加了引号
所以错误提示:'line2 :incorrect synatx near 'text''
 
to 萧月禾:
我感觉doud的语句并没有少引号呀?不过你的filter可以,谢了!分数马上就给。能不
能再告诉我filter语句的含义?
 
to 萧月禾:
filter语句里不能用like吗?你语句里的好像没有实际意义?
 
filter语句里不能用like,只能左匹配Field1=#39'*'+edit2.text#39;
你的是MSSQL7吗?如下语句肯定是通过的
'select * from (select * from table1) as a where field1 like '+#39+
'%'+edit2.text+'%'+#39;我觉得有可能是你的语句拼写有问题,你可以在执行
前显示一下把语句贴过来。
 
将sql语句定义如下:
ADOQuery.SQL.Add('select * from table1');
ADOQuery.SQL.Add('where A=:parm1');

在Button2的OnClick事件中加入:
ADOQuery.Parameters[0].Value:=Edit2.Text;
ADOQuery.ReQuery;


 
to softdog:
假如二次检索是要用B检索怎么办?
 
你指的用B检索是指根据B字段的值来查询吗?
如果是这样的话,将代码中的“where A=:parm1”改成“where B=:parm1”就可以啊!
 
你这样一改,不就是重新搜索吗?我要的是在第一次检索的结果里在进行检索!
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
548
import
I
I
回复
0
查看
696
import
I
后退
顶部