[font=黑体][size=1][color=008000]临时表的特点与使用方法[/color][/font][/size]

假设源表为A,查询表为B

    临时表的三种工作机制及其区别:
    一、没有指定查询表B的名字
select * from A
    重复执行该查询语句时,系统关闭上次查询窗口,再生成一份一样的新的查询窗口。也就是说,不管结果是否存在,该语句都执行。
    二、指定查询结果到临时表B
select * from A into cursor B
    重复执行该查询语句时,如果上次查询窗口不关闭,系统不予再次执行,从命令窗口始终获得焦点可以看出这一点。而select * from A语句每次执行都是焦点从命令窗口跳到查询窗口。
    以上两种情况,查询结果只保存在内存里。
    三、指定查询结果到自由表
select * from A into table B
    这种情况查询结果既保存在内存里,同时又保存到磁盘里。

    综上所述,归纳几点:
    1.查询表为临时表,要想使其成为永久,应采用上面“三”所指的语句。
    2.既然查询表为临时表,查询完应立即关闭,否则就会占用系统资源。
    3.查询语句执行后,当前工作区为临时表,所以看完后马上关闭是最好的时机。
select * from A
brow
use
selet A
...
    4.程序设计中,不宜采用“一”、“二”中所指的语句,一般采用“三”所指的语句,做法是:
    (1)在查询表单“C”中,根据查询条件,执行“三”中的语句将结果保存到磁盘里,然后就关闭临时表(这个结果请另存放到“temp”目录下,不要放在DATA目录里,以免表多了相互混淆)。
    (2)查询结果生成后,调用另一表单“D”,表单“D”中的表格的数据源是“B”。表单“D”关闭时,也将表“B”关掉,这里“B”表已不是临时表,而是再次由磁盘上打开的表。

     示例代码如下:
select A
select * form A into table c:\myprog\temp\B.dbf
use  &&关闭临时表“B”
do form c:\myprog\forms\D.scx &&表单执行时,重新打开了“B”表。