以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  关于动态建立表的问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=7930)

--  作者:cxabc123
--  发布时间:2010/8/20 15:54:00
--  关于动态建立表的问题

老大,我想在项目中建一张表,用于动态创建表,有:表名、列名、列类型 等列,然后在增加表的代码中

Dim Builder As New ADOXBuilder
Dim
tbl As ADOXTable
Builder.Open()
tbl = Builder.NewTable(
"订单") \'创建表
With
tbl
    .AddColumn(
"日期" ,ADOXType.DateTime)
    .AddColumn(
"产品" ,ADOXType.String, 12)
    .AddColumn(
"客户" ,ADOXType.String, 20)
    .AddColumn(
"数量" ,ADOXType.Integer)
    .AddColumn(
"备注" ,ADOXType.Text)
End With
Builder.AddTable(tbl)
\'增加表
Builder.Close()

 

 

将ADOXType.DateTime用“列类型”中的值代替,这时候“列类型”列的数据类型应该如何设置,或者这样的代码应该如何来写,

比如:

With tbl
    .AddColumn(列名
,列类型)
 
End With

肯请老大指点

[此贴子已经被作者于2010-8-20 15:55:46编辑过]

--  作者:狐狸爸爸
--  发布时间:2010/8/20 15:56:00
--  
用Select Case 逐个根据表中的值来判断对应的列类型,然后增加列。
--  作者:cxabc123
--  发布时间:2010/8/20 15:57:00
--  
没有跟简单的办法,也就是在增加表的时候批量去增加列吗
[此贴子已经被作者于2010-8-20 15:57:04编辑过]

--  作者:狐狸爸爸
--  发布时间:2010/8/20 15:58:00
--  

已经很简单了


--  作者:cxabc123
--  发布时间:2010/8/20 16:09:00
--  
老大,能帮忙写一段吗,我试了好多便了,就是搞不定
--  作者:czy
--  发布时间:2010/8/20 16:11:00
--  
以下是引用cxabc123在2010-8-20 15:54:00的发言:

老大,我想在项目中建一张表,用于动态创建表,有:表名、列名、列类型 等列,然后在增加表的代码中

Dim Builder As New ADOXBuilder
Dim
tbl As ADOXTable
Builder.Open()
tbl = Builder.NewTable(
"订单") \'创建表
With
tbl
    .AddColumn(
"日期" ,ADOXType.DateTime)
    .AddColumn(
"产品" ,ADOXType.String, 12)
    .AddColumn(
"客户" ,ADOXType.String, 20)
    .AddColumn(
"数量" ,ADOXType.Integer)
    .AddColumn(
"备注" ,ADOXType.Text)
End With
Builder.AddTable(tbl)
\'增加表
Builder.Close()

 

 

将ADOXType.DateTime用“列类型”中的值代替,这时候“列类型”列的数据类型应该如何设置,或者这样的代码应该如何来写,

比如:

With tbl
    .AddColumn(列名
,列类型)
 
End With

肯请老大指点

[此贴子已经被作者于2010-8-20 15:55:46编辑过]

 

不妨将你做的东东传上来。


--  作者:cxabc123
--  发布时间:2010/8/20 16:12:00
--  
做来做去,到现在还没有成功一点呢,思路都没有成形,不知道该如何做
--  作者:狐狸爸爸
--  发布时间:2010/8/20 16:13:00
--  
Dim Builder As New ADOXBuilder
Dim tbl As ADOXTable
Builder.Open()
tbl = Builder.NewTable("订单") \'创建表
For Each dr As DataRow In Tables("xxx").DataRows
    With tbl
        Select Case dr("列类型")
            case "字符型"
               增加字符型列
            case "日期型"
               增加日期型列
            \'...
    End With
Next
Builder.AddTable(tbl) \'增加表
[此贴子已经被作者于2010-8-20 16:12:47编辑过]

--  作者:cxabc123
--  发布时间:2010/8/20 16:16:00
--  
原先是用论坛上介绍的SQL语言增加表,现在老大公布了他的箱底货,我想改用这个办法来做,但是不知道如何才能做好。原先的那个办法比较简单,但是新增加的表不能自动调出来。现在老大的这个办法可以自动调出表来,但就是比较复杂。请各位帮忙了
--  作者:cxabc123
--  发布时间:2010/8/20 16:17:00
--  
这个方法如果实现的话,设计的项目数据库的扩展功能就很强大了,个性化会进一步增强
[此贴子已经被作者于2010-8-20 16:18:16编辑过]