Query 查询的结果能存为一个临时表吗?(100分)

  • 主题发起人 主题发起人 ccie
  • 开始时间 开始时间
C

ccie

Unregistered / Unconfirmed
GUEST, unregistred user!
不知Query控件的Datasouce属性除了实现Master/Detail的功能,
能否将Query1的查询结果存为一个临时表,Query2在此临时表上再作查询.
 
简单的方法是,用 BatchMove 控件,Source = 做的查询,
Destination = 新表名,mode = copy
 
ccie,能给我解释下什么是临时表么?
crab的方法我认为是比较好的(因为不了解什么是临时表。。呵呵)
 
感谢Crab ,你是指自己用Batchmove建一个表,用完之后再删去吗?
有没有,类似视图的做法?
 
Datasouce属性只是为了从另一个数据集获得参数。我认为不需要建表也没必要做
视图,直接让查询结果显示到TDBGrid上挺好的。

另建新表用Create Table建一个新表。
 
建临时表是不是在程序运行需要时创建一个表文件,退出程序时又删掉它那种?
这样对用户可不友好。
 
临时表: 使用create table建立在内存中的表,速度快多了。

TO;Crab
我用Clientdataset建了临时表,好象不能用BatchMove
 
Delphi 的 TTable 支持内存表,但是如何实现我忘了 ... :(
 
To 烂泥
如何建立在内存中的表?
 
select into好像可以
 
能。//CREATE TABLE #te (局部)
//CREATE TABLE ##te (全局)

dmInventory.qinvd.close;
dmInventory.qinvd.sql.text:=' CREATE TABLE #te ('+
'gperm2 smallint, grade char(2), w1 float null, b1 float null, w2 float null, b2 float null, '+
'w3 float null, b3 float null, w4 float null, b4 float null, w5 float null, b5 float null, '+
'w6 float null, b6 float null, w7 float null, b7 float null, w8 float null, b8 float null, '+
'w9 float null, b9 float null, w10 float null, b10 float null, wRoll float null, bRoll float null, '+
'inv float null, invb float null )'+
'declare @gperm2 smallint declare @grade char(2) declare @w1 float declare @b1 float '+
'declare @w2 float declare @b2 float declare @w3 float declare @b3 float declare @w4 float '+
'declare @b4 float declare @w5 float declare @b5 float declare @w6 float declare @b6 float '+
'declare @w7 float declare @b7 float declare @w8 float declare @b8 float declare @w9 float '+
'declare @b9 float declare @w10 float declare @b10 float declare @wRoll float declare @bRoll float '+
'declare @inv float declare @invb float '+
'declare c_InvStruc cursor for select distinct gperm2,grade from inventory i,vproductdata v,stores s '+
'where i.productno=v.productno and s.storeNo=i.storeNo and s.status=''n'' and s.compNo="0000" and (i.weight<>0 or i.wtemp<>0 or i.wbooked<>0 or wway<>0) ';
dmInventory.qinvd.open;
 
TO WUMENG
请问你提供的办法是对所有的DBMS都适用吗?对PARADOX是否可以?

 
1.使用TQUERY
TQUERY.CACHEDUPDATES:=TRUE
TPUERY.REQUESTLIVE:=TRUE
在原有的SQL语句后加入一条WHERE子语句,要求加入这条WHERE子语句后SQL查询结果为空。

 
多人接受答案了。
 
后退
顶部