您好,请教如何才能访问到多个Select 语句的结果,用如下结构,谢谢(100分)

  • 主题发起人 wjlsmail
  • 开始时间
W

wjlsmail

Unregistered / Unconfirmed
GUEST, unregistred user!
您好,在如下结构中:
with TADOQuery.Create(self) do
begin
try
begin
ConnectionString := '...' ;
Sql.Add('Select Count(*) as counts from table');
Sql.Add('Select FieldName from table');
Open;
Label1.Caption := FieldByName('counts').AsString;
Label2.Caption := FieldByName('FieldName').AsString; //提示: 没有FieldName字段
end;
finally
Free;
end;
end;

第二个查询的字段不能找到,请教如何才能访问到多个Select 语句的结果,就用这种结构,谢谢
 
???
一次当然只能有一条了!
 
那第二个查询的结果应该怎样取得? 就用这种一次写多条的结构
谢谢您
 
Sql应该这样写:select FieldName ,Count(*) counts from table
 
hzqlli:
我知道这样可以,不过我想了解那种结构下的访问方法;因为要用。上面的程序只是一个引子

谢谢回复
 
要同时执行两条语名,在一个表是不行的,可以使有用以下的方法:
var
QTable: TADOQuery;
begin
QTable := TADOQuery.create(self);
QTable.ConnectionString := '.....';
QTable.SQL.Add('Select FieldName from table');
Open;
Label2.Caption := QTable.FieldByName('FieldName').AsString;
free;
end;
 
用两条Select语句真不行么?

 
当然不行了,你跟中一下就知道了,sql.add是把所有的sql字符相加,如果没有clear的话

,用两个当然是不行的。
 
用两个 query ,或查询完一个进行处理,然后再进行另一个
 
jenemery:您好, 在这样的写法中,两条语句是分行的 ,如:
Select Count(*) from Table
Select FieldName from Tabel

在Sql Server 2000 的查询分析器中,这样的分行写的语句可以执行的,Delphi提供Sql.Add
方法的目的我想也在于为了向数据库传送多行的Sql语句,请注意:

在Sql Server 2000的查询分析器中,这样两个查询结果会出现在两个工作区,我们用FieldByName取得
是第一个工作区的结果,我想在Delphi中也可以取得第二个工作区的数据,是不是
TADOQuery有指定Sql Server 2000查询结果工作区的方法么? 我不知道。望大家指导,讨论,谢谢
 
还是老老实实来吧,世界没你想的说的这么简单。
要不你用存储过程,让他一次给你返回结果得了。
 
glbboy: :) 我想,Delphi中应该可以读取 Sql Server 2000 查询的查询结果 吧 。 我愿意相信是这样:)

欢迎大家继续指导、讨论关于访问Sql Server 2000查询结果处于不同工作区的问题,谢谢
 
這樣連續ADD 是不行的
 
skywareyu79 : BDE 可以? :)
 
访问多个SELECT结果用UNION ,要求每个SELECT 字段 必须一相同
select a1,a2,a3 from table1
union all
select b1 as a1,b2 as a2,' ' as a3 from table2


 
竹寨: 您好,谢谢您得回复。谢谢,您给的方法是如何从多表中取得同类型数据,与我的需求不一致:)
再说,这种从表中去数据的方法也有很大的局限,比如它只能取得同类型的数据。
从多表中取数据一般多用存储过程完成,我的问题也完全可以用存储过程解决,不过我就是
想了解Delphi能否访问Sql Server 2000中类似查询分析器中的不同工作区中的数据

欢迎大家继续讨论、指导,谢谢
 
不同的查询分析器应该是对应客户端的不同的连接
你如果执行两个程序就行了,一段EXE程序处理完了执行另一段独立的Exe
 
jxyghm, :您好, 是同一个查询分析器中取不同的查询结果集

欢迎大家继续讨论,指导,谢谢:)
 
with TADOQuery.Create(self) do
begin
try
begin
ConnectionString := '...' ;
Sql.Add('Select Count(*) as counts from table');
sql.add('unit');
Sql.Add('Select FieldName from table');
Open;
Label1.Caption := FieldByName('counts').AsString;
Label2.Caption := FieldByName('FieldName').AsString; //提示: 没有FieldName字段
end;
finally
Free;
end;
end;
如果还不能通过的话,说不准是Fieldname根本没有在你的表中
 
最好是用存储过程,很方便就能解决掉!
 
顶部