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


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

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

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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望: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编辑过]

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


加好友 发短信 F6
等级:狐精 帖子:3030 积分:19188 威望:0 精华:2 注册:2008/9/1 7:50:00
  发帖心情 Post By:2011/4/11 10:16:00 [只看该作者]

顶一个,呵呵


 回到顶部
帅哥哟,离线,有人找我吗?
程兴刚
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:7237 积分:40614 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2011/4/11 12:22:00 [只看该作者]

顶!

 回到顶部
帅哥哟,离线,有人找我吗?
bl018
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:126 积分:1431 威望:0 精华:0 注册:2009/1/27 10:06:00
  发帖心情 Post By:2011/4/14 22:13:00 [只看该作者]

DataTables("订单")   就应改为    DataTables("旧表名称")

   不然出错图片点击可在新窗口打开查看


 回到顶部
帅哥哟,离线,有人找我吗?
lihe60
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6848 积分:43334 威望:0 精华:0 注册:2009/3/2 14:07:00
  发帖心情 Post By:2011/4/15 9:03:00 [只看该作者]

应该加入帮助。这些代码最好放在后台,用户只需一行代码最好了。

 回到顶部
帅哥哟,离线,有人找我吗?
cbs429
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:5 积分:120 威望:0 精华:0 注册:2010/11/21 10:46:00
  发帖心情 Post By:2011/4/23 21:36:00 [只看该作者]

要如何给ADOXTable指定数据源名称。我想从A.table文件中的A表复制到B.table文件去。要如何操作?

 回到顶部
帅哥哟,离线,有人找我吗?
cbs429
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:5 积分:120 威望:0 精华:0 注册:2010/11/21 10:46:00
  发帖心情 Post By:2011/4/23 21:39:00 [只看该作者]

用以上方法也只能复制数据列,表达式列复制到新表中后都变成数据列了

 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2011/4/24 1:09:00 [只看该作者]

tbl.AddColumn(dc.ColumnName, ADOXType.Long)  这个有问题吧:

 

帮助中说::::

 

ADOXType是一个枚举,用于指定列的类型,其可选值包括:

 

············

 

Long:    长整数型,注意内部表和Access数据源不支持此类型..

 

·············

 


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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/4/24 14:33:00 [只看该作者]

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


 回到顶部
帅哥哟,离线,有人找我吗?
shanyou20
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:9 积分:151 威望:0 精华:0 注册:2013/1/15 14:32:00
  发帖心情 Post By:2013/1/22 14:49:00 [只看该作者]

 好用,顶图片点击可在新窗口打开查看

 回到顶部
总数 15 1 2 下一页