如何在SQL SEVER 2000中,动态建表 另外ASP中如何自定义FORM? (200分)

  • 主题发起人 主题发起人 bluefoam
  • 开始时间 开始时间
B

bluefoam

Unregistered / Unconfirmed
GUEST, unregistred user!
由于表中的字段会随着需要而进行添加(当然,不会关系到结构的变化)
我的想法是将需要建的字段存入一表中,比如
CREATE TABLE [dbo].[Empl_DataField] (
[Field_ID] [int] IDENTITY (1, 1) NOT NULL ,
[Field_Desc] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Field_Name] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Field_Type] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Allow_Null] [bit] NULL ,
[Default_Value] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Level_Num] [int] NULL
) ON [PRIMARY]
GO
每条记录对应于我需要动态生成的表中的各字段。

请问如何写出建立动态表的SQL?(可以为触发器,或存储过程,当上表改变的时候重新
生成,并把原先动态表中数据记录复制到新生成的表中)

最近在考虑字定义FORM的问题,能够自定义自然很方便与应用,只是这后台开发的成本似
乎太高了,有作过类似思考的同志?可以探讨一下吗?
 
[green][/green]你不是已经写出来了吗?
就安照上面的格式写啊
写不出来的话,给出表的结构
我来试试
 
所谓动态建表也就是建立临时表,在用完之后要将其删掉即可。或者做一个随即表名生成器。
 
Field_ID | Field_Desc | Field_Name | Field_Type | Allow_Null | Level_Num
1 工号 work_no nvarchar(50) 1 0
2 中文名 cname nvarchar(50) 1 0
3 英文名 ename nvarchar(50) 1 0
4 私人电话 phone nvarchar(50) 1 3

现在就定为4个字段,改如何从这个表中生成动态表?
 
另外我还在想问个问题:
对于不同等级的用户(Level_Num),所能看到的字段是不一样的(某些权限高的字段
比如:薪资),该如何定义表之间的关系,让用户进入界面以后,通过权限识别,只能对
他具有权限的字段进行包括“查询,编辑,浏览。。。”
问题在于,在代码中,不具体的安排或者指定字段,仅通过以上的两表自动生成适合指定
用户的数据表。SQL又该如何写?(似乎就是上题的扩展,生成新的视图?)(有加分)
 
??

---> 绝对零度

no response?
 
如果是临时表,在写Sql语名建表时表名前加#,如:Create Table dbo.#aa
 
不明白你动态创建表的目的是什么
如果只是要做到不同的用户对不同字段操作的权限控制的话
用视图不就搞定了?
 
我说bluefoam
你这个问题很麻烦,要是就是动态建表的话,字段都固定那就马上告诉你答案
可是连字段都不固定的话,我得好好想想[:)]
 
字段固定了不就不好玩了嘛,呵呵

还不是为了那可扩展性啊 8(

 
你是不是说从一个表里通过查询产生一个新表?
 
你看这样行不
保存字段的表叫A,要创建的表叫B
我们在A表建一个触发器,在第一个记录插入时创建B
以后如果插入一个记录,触发器先检查表是否存在,存在则
用ALTER向B插入字段

简单的思路,仅供参考。
 
最近做了一个类似SQL系统表的东东,开发了一个COM。
可以自定义FORM内的所有字段,可修改,增删,但操作实在是太烦琐,不够通用
 
后退
顶部