在查询中继续查询的问题 急!!!!分数不够,可以再加(50分)

  • 主题发起人 主题发起人 zhch1100
  • 开始时间 开始时间
Z

zhch1100

Unregistered / Unconfirmed
GUEST, unregistred user!
环境 d6+ado+access2000
dwdm存放基础信息,有 dwbh ,dwmc 两个字段
dwbh dwmc
01 一队
02 二队
03 办公室
. .
. .
. .

gzxx存放细节信息, 有 dwbh,xm,zg,xj,...等字段
dwbh xm zg xj ...
01 张 30 0 ...
01 李 25 5 ...
02 肖 30 0 ...
02 王 28 2 ...
. . . . ...
. . . . ...
. . . . ...


dwdm和gzxx有共同字段dwbh
对dwdm进行动态查询后,再对gzxx进行查询
要求在gzxx中找出所有与dwdm查询结果中相同dwbh的信息,
如何实现?比如在form1窗体中的edit1中输入‘队’,
在dbgrid1中就会显示:
dwbh xm zg xj ...
01 张 30 0 ...
01 李 25 5 ...
02 肖 30 0 ...
02 王 28 2 ...

if edit1.Text<> '' then
begin
ADOQuery2.close;
ADOQuery2.SQL.clear;
ADOQuery2.SQL.Add('select * from gzxx where 1:=1');
ADOQuery2.SQL.Add(' and where dwbh in ('select dwbh from dwdm where dwmc like'+'%'+edit1.text+'%')');
ADOQuery2.Open;
end;
if edit1.Text= '' then
begin
ADOQuery2.close;
ADOQuery2.SQL.clear;
ADOQuery2.SQL.Add('select * from gzxx where 1:=1');
ADOQuery2.Open;
end;
运行是根本就通不过。
 
>>'select * from gzxx where 1:=1');
这是什么?
 
这是一个查询全部数据的语句
 
sql.add('select * from gzxx where dwdh=')
sql.add('(select dwdh from dwdm where dwmc like '+'%'+edit1.text+'%)')
sql.open
 
>>'select * from gzxx where 1:=1'
多了个冒号 'select * from gzxx where 1=1'查询全部不要where不就行了。

我觉得最好先做个视图,两张表联系起来,视图每个记录都包含 dwmc,
这样就只要一个Select从视图查询dwmc like '+'%'+edit1.text+'%)',多方便!
 
你可以加一个combobox 放 dwmc
select * from dwdm
然后
select * from gzxx where dwbh=(select dwbh from dwdm where dwmc=:dwmc)
parambyname('dwmc').asstring:=combobox.text
全部 加一个 checkbox

select * from gzxx
 
to GanQyan:
请问怎么建立一个视图,能不能说得详细一点,我从来没有用过视图,
 
var
tt: string;
begin
if edit1.Text<> '' then
begin
tt:='select * from gzxx where dwbh in(select dwbh from dwdm where dwmc like'+'%'+edit1.text+'%')';
ADOQuery2.close;
ADOQuery2.SQL.clear;
ADOQuery2.SQL.Add(tt);
ADOQuery2.Open;
end;
if edit1.Text= '' then
begin
ADOQuery2.close;
ADOQuery2.SQL.clear;
ADOQuery2.SQL.Add('select * from gzxx ');
ADOQuery2.Open;
end;
end;
查询的DWBH在后面的查询范围内---即多重查询subquery
 
视图就是access里的查询
view1: select a.dwbh,a.dwmc,b.xm,b.zg,b. xj
from table a,table b
where a.dwbh=b.dwbh

select * from view1 where right(dwmc,1)='队'
 
对,查询要多用视图
 
关注....[:)][:)]
 
1用临时表
2如果是DELPHI用Filter过滤功能
OK?
 
'select dwdm.dwbh,gzxx.xm,gzxx.zg,gzxx.xj from dwdm,
gdxxz where dwdm.dwbh=gzxx.dwbh and dwdm.dwmc like '+'''%'+edit1.text+'%'''
在win98se+Access2000中測試通過
 
按照cansum的方法,问题已经解决,谢谢各位。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
916
SUNSTONE的Delphi笔记
S
后退
顶部