我有一个AdoQuery1 查询出了内容,并显示在GRID1里,
一个AdoQuery2 查询出了内容也显示在GRID2里;通过Tedit控件输入方式作为条件;在TEDIT里输入的内空代表在
AdoQuery1跟AdoQuery2表里都有这个字段;
问题:要把在AdoQuery2表字段(Tedit)里的内容跟AdoQuery1表字段(Tedit)里的内容一样的数据查询到另一个AdoQuery3或GRID3里,应如何实现呢?谢谢哪大虾帮忙,
急待在线
一个AdoQuery2 查询出了内容也显示在GRID2里;通过Tedit控件输入方式作为条件;在TEDIT里输入的内空代表在
AdoQuery1跟AdoQuery2表里都有这个字段;
问题:要把在AdoQuery2表字段(Tedit)里的内容跟AdoQuery1表字段(Tedit)里的内容一样的数据查询到另一个AdoQuery3或GRID3里,应如何实现呢?谢谢哪大虾帮忙,
急待在线
{Tedit.text输入条件, 则在查询按扭Button1中写上:}
procedure TForm1.Button1Click(Sender: TObject);
var
i: LongInt;
f: Double;
begin
if not TryStrToInt(Edit1.Text,i) or not TryStrToFloat(Edit1.Text,f) then Exit; {判断是不是数字}
AdoQuery1.filter:='kk>'+edit1.text+'';
AdoQuery2.filter:='kk>'+edit1.text+'';
AdoQuery1.filtered:=true;
AdoQuery2.filtered:=true;
{上面已经过滤了记录,下面判断一下,显示在dbgrid3中:}
if (ADOQuery1.RecordCount>0) and (AdoQuery2.RecordCount>0) then
begin
AdoQuery3.Close;
AdoQuery3.sql.text:='Select * from tb1 where kk>'+edit1.text+''; {要显示那个表,那个列,或全部列,自己改一下}
AdoQuery3.open;
end
else
...
end;
首先谢谢;
上面问题点:1.TEDIT是我输入两个表字段名,我的意思通过TEDIT输入的内容就安两
个表里有这个字段来查询出相同的字段(Tedit)里的内容;而不是条件;
2.我没有说清楚的是在表AdoQuery2有的字段在AdoQuery1里都有,查询出
AdoQuery3的内容字段以AdoQuery2为依据;
3.在上面“AdoQuery3.sql.text:='Select * from tb1 where kk>'+edit1.text+''; ”与
AdoQuery1、AdoQuery2都没有半天关系;如何查出有AdoQuery2表里字段(Tedit)在AdoQuery1
字段(Tedit)里有相同的内容
一个AdoQuery1 查询出了内容,并显示在GRID1里,
一个AdoQuery2 查询出了内容也显示在GRID2里; 通过Tedit控件输入方式作为两个表里都有的字段;就是在TEDIT里输入的内空代表在
AdoQudoquery1跟AdoQuery2表里都有这个字段;
1.TEDIT是我输入两个表字段名,我的意思通过TEDIT输入的内容就为两
个表里有这个字段来查询出相同的内容;而不是内容条件;
2.在表AdoQuery2有的字段在AdoQuery1里都有,查询出
AdoQuery3的内容字段以AdoQuery2为依据;也就是把AdoQuery2表字段
TEDIT的内空跟在表AdoQuery1字字段TEDIT相同内空查找出来;问题:要把在AdoQuery2表字段(Tedit)里的内容跟AdoQuery1表字段(Tedit)里的内容一样的数据查询到另一个AdoQuery3或GRID3里,应如何实现呢?
if trim(edit1.Text)<>'' then
with adoquery3 do begin
close;
sql.Text:='select a.*,b.* from 表1 a inner join 表2 b on a.'+edit1.Text+'='+'b.'+edit1.Text;
open;
end;
然后,对比查询结果,有两同的值就显示在DBGrid3中??
with adoquery3 do begin
close;
sql.Text:='select a.*,b.* from 表1 a inner join 表2 b on a.['+edit1.Text+']='+'b.['+edit1.Text+']';
open;
end;
sql.Text:='select a.*,b.* from 表1 a inner join 表2 b on a.'+edit1.Text+'='+'b.'+edit1.Text;这个上面的不是我想要的;
表1、 表2是数据里的实表,我要的是ADOQUERY1跟ADOQUERY2查询处理过的两上虚表,问题的重点在这里;
谢谢
ADOQUERY1跟ADOQUERY2为查询出来的两上虚表,而不是数据库里面的表,这个是我搞不出来要要问的重点;
谢谢
1.ADOQUERY1的SQL语句是:select * from 表1 where x_a=1
2.ADOQUERY2的SQL语句是:select * from 表1 where l_a=14
以上是两个含有条件的查询语句.if trim(edit1.Text)<>'' then
with adoquery3 do begin
close;
sql.Text:='select a.*,b.* from (select * from 表1 where x_a=1) a inner join (select * from 表1 where l_a=14) b on a.['+edit1.Text+']='+'b.['+edit1.Text+']';
open;
end;
if trim(edit1.Text)<>'' then
with adoquery3 do begin
close;
sql.Text:='select a.*,b.* from (生成虚表1的语句) a inner join (生成虚表2的语句) b on a.['+edit1.Text+']='+'b.['+edit1.Text+']';
open;
end;
prd_no, name, spc, knd, ut,
002 B02 23*3 4 KG
004 KHL M*23 2 MADOQUERY2查询并可显示在GRID2里字段、内容:
prd_no, name, spc
001 B01 20*2
002 B02 23*3
003 B03 Y*Y7
004 KHL M*23 现在我在edit里输入"prd_no", 点BUTTON后就在上面两查出的表里按prd_no来对应,把ADOQUERY2
在ADOQUERY1里有的内容查出来显示到ADOQUERY3或GRID3里得到结果:
prd_no, name, spc
002 B02 23*3
004 KHL M*23 我这样说是否明白
所以我才想到是否能直接引用ADOQUERY1或GRID1、ADOQUERY2或GRID2来解决
begin
if trim(edit1.Text)<>'' then
with adoquery1 do begin
DisableControls;
First;
adoquery2.DisableControls;
adoquery2.First;
while not eof do begin
if FieldValues[edit1.Text]=adoquery2.FieldValues[edit1.Text] then begin
adoquery3.Append;
adoquery3.FieldValues['prd_no']:=FieldValues['prd_no'];
adoquery3.FieldValues['name']:=FieldValues['name'];
adoquery3.FieldValues['spc']:=FieldValues['spc'];
adoquery3.Post;
end;
next;
adoquery2.Next;
end;
EnableControls;
adoquery2.EnableControls;
end;
end;
我查询adoquery2这个表里的内容不是固定的呢,应如保处理呢
我没有数据表的:我就是想做一个从EXCEL里能倒入到SQL表里的功能;但是我就是判断不出有重复的如何处理;ADOQUERY1是查的是数据库表里的内容出来的数据;
而ADOQUERY2是从EXCEL里查询转过来的内容数据;所以ADOQUERY2字段不是固定变化的,但是它有的字段一定会ADOQUERY2表里存在;
2.根据这个临时表和adoquery1所联接的表假定为t1进行关联(因为你的临时表中有的字段一定在t1中存在)
3.开始拼sql
with adoquery3 do
begin
close;
sql.text := ' select t1.*,t2.* from t1,t2'+
' where t1.'+trim(edit1.text)+'=t2.'+trim(edit1.text);
Open;
end;不知道是不是这个意思,你是根据edit1中的内容做为联接字段来查询t1与t2中有关联的信息.
而不是T1、T2表;T1、T2是从哪里来的呢;我已把源、目标数据查询到adoquery1、adoquery2里了,现在就想对
adoquery1、adoquery2两个控件里的作比较有一样的数据显示出来 den88
您引用的这个差很大;可以看我另发整理的一个贴
为什么一定要把思维锁定在操作adoquery1和adoquery2呢,其实你最终操作的还是数据表,adoquery1,adoquery2中人过是把数据进行提取罢了.