Foxtable(狐表)用户栏目专家坐堂 → 复制表结构的通用代码


  共有14182人关注过本帖树形打印复制链接

主题:复制表结构的通用代码

帅哥哟,离线,有人找我吗?
狐狸爸爸
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
复制表结构的通用代码  发帖心情 Post By:2011/4/11 7:58:00 [显示全部帖子]

这是复制表结构的通用代码,如果是外部数据源,记得给ADOXTable指定数据源名称。

一些类型是没有介绍过的,例如Data.DataColumn和DataType,大家无需理会,直接套用代码即可:

 

Dim Builder As New ADOXBuilder
Dim tbl As ADOXTable
Builder.Open()
tbl = Builder.NewTable("新表名称") '创建表
With tbl
    For Each dc As Data.DataColumn In DataTables("订单").baseTable.Columns
        If DataTables("旧表名称").DataCols.Contains(dc.ColumnName)  = False Then
            Continue For
        End If
        If dc.DataType Is Gettype(String)
            If dc.maxlength > 0 And dc.MaxLength < 256 Then
                tbl.AddColumn(dc.ColumnName, ADOXType.String, dc.maxlength)
            Else
                tbl.AddColumn(dc.ColumnName, ADOXType.text)
            End If
        ElseIf dc.datatype Is Gettype(Date) Then
            tbl.AddColumn(dc.ColumnName, ADOXType.DateTime)
        ElseIf dc.datatype Is Gettype(Boolean) Then
            tbl.AddColumn(dc.ColumnName, ADOXType.Boolean)
        ElseIf dc.datatype Is Gettype(Integer) Then
            tbl.AddColumn(dc.ColumnName, ADOXType.Integer)
        ElseIf dc.datatype Is Gettype(Long) Then
            tbl.AddColumn(dc.ColumnName, ADOXType.Long)
        ElseIf dc.datatype Is Gettype(Short) Then
            tbl.AddColumn(dc.ColumnName, ADOXType.Short)
        ElseIf dc.datatype Is Gettype(Byte) Then
            tbl.AddColumn(dc.ColumnName, ADOXType.Byte)
        ElseIf dc.datatype Is Gettype(Double) Then
            tbl.AddColumn(dc.ColumnName, ADOXType.Double)
        ElseIf dc.datatype Is Gettype(Single) Then
            tbl.AddColumn(dc.ColumnName, ADOXType.Single)
        ElseIf dc.datatype Is Gettype(Decimal) Then
            tbl.AddColumn(dc.ColumnName, ADOXType.Decimal)
        End If
    Next
End With
Builder.AddTable(tbl) '增加表
Builder.Close()
MessageBox.show("生成新表成功,将重新打开项目")
syscmd.project.Open(ProjectFile)

[此贴子已经被作者于2011-4-11 7:59:25编辑过]

[本帖被加为精华]
 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/4/24 14:33:00 [显示全部帖子]

呵呵,没有问题的,因为内部表不存在Long类型,代码根本就不会执行此处,再说这是通用代码,加上才合理。


 回到顶部