临时表的问题(100分)

  • 主题发起人 主题发起人 jacer
  • 开始时间 开始时间
J

jacer

Unregistered / Unconfirmed
GUEST, unregistred user!
1.用TQuery建立一个临时表,这个表的结构是动态的,包含几个表的字段。
建立好后,如何将它存到一个永久性的表里?
2.如何用SQL查询这个临时表的表项内容?比如:
SELECT PartItemNum, PartName, PartSerialNum
FROM ???
3.我想把这个临时表的某些字段设为可编辑的,该如何做?
可能不太清楚,换句话说,这个TQuery查询了几个表,我希望其中一个表
是可写的,其他表都只读。有解决的办法吗?

一下提了三个问题,但都是有关临时表的,诸位大虾请见谅。
 
不懂

你用TQuery创建的临时表? 恐怕你误解了TQuery的作用.
 
1: SELECT INTO tablename 可把查询结果写入新表
2: SELECT .... FROM tablename
 
1、用 TBatchMove 控件 。
2、query.FieldByName('PartItemNum').AsString
query.FieldByName('PartItemNum').AsInteger 等等
3、用 TUpdateSQL , 你的 Query 控件的 UpdateObject 设置为这个 UpdateSQL
 
to yifeng:
也许我用词不当,应该怎么叫这样的临时生成并显示的表?

to gxg8816:
tablename该怎么取?

to pipi:
1、新表的结构不定,该怎么办?
2、3、恕我鲁钝,好象不太懂,能讲的更清楚些吗?
 
其实这是视图的概念. 你可以创建一个视图(VIEW TABLE),其内容是你的QUERY中所关联到的几个表中的字段('CREATE VIEW TABLE XXX AS'+QUERY1.SQL.TEXT)
至于那些字段可以编辑,完全取决与原表的属性,而不是视图本身所决定的
 
你从query里看到数据不是什么临时表, 这里只是一个recordset

如果你想在这个recordset的基础上查询或导出数据, 可以用gxg8816的方法
但是有可能有的数据库不支持, 可以试试看batchmove.
至于table name 就是 as you wish, 如果你希望不和你已经产生的表冲突,可以
用算法得出一个唯一的表名称.

一定要修改查询结果, 可以使用updatesql或者自己继承tquery重新写一个控件来满
足要求
 
1.可以做一个存储过程。将临时表的数据复制到其他表中,用TBatchMOve也可以,但
我觉得用存储过程速度快些。
2.在SQL Server 中提供了一个sysobjects表,在这里你根据表名
找到该表的id, 然后根据表的id可以在表syscolumns中找到id表的各个字段
的名称及类型。例如:
select * from syscolumns
where id=(select id from sysobjects where name='表名')
3.3、用 TUpdateSQL 。
 
1)agree rolland,他的“永久性的表”应该是一个视图,jacer要把“临时生成并显示的表”存起来是要建立一个视图,可以用
create view yourviewname as
select ... from ... where ...
[with check option]
2)可以用select 查询视图,
select ... from 视图名 where
3)可以给视图以权限。来控制每个人对视图的访问。
grant permission_list
on object_name(视图名称)
to username_list.
 
多人接受答案了。
 
后退
顶部