以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  复制表结构提示错误,见附件。  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=21065)

--  作者:tongyong1969
--  发布时间:2012/6/29 12:44:00
--  复制表结构提示错误,见附件。
运行的代码如下,连接的是外部数据源。
Dim Builder As New ADOXBuilder("ctais2")
Dim tbl As ADOXTable
Builder.Open()
tbl = Builder.NewTable("xx") \'创建表
With tbl
    For Each dc As Data.DataColumn In DataTables("DJ_NSRXX").baseTable.Columns
        If DataTables("DJ_NSRXX").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)
图片点击可在新窗口打开查看此主题相关图片如下:未命名.jpg
图片点击可在新窗口打开查看
        End If
    Next
End With
Builder.AddTable(tbl) \'增加表
Builder.Close()
MessageBox.show("生成新表成功,将重新打开项目")
syscmd.project.Open(ProjectFile)

--  作者:狐狸爸爸
--  发布时间:2012/6/29 14:26:00
--  

我写了一段简单的代码拉测试,木有发现问题:

 

Dim Builder As New ADOXBuilder("fff")
Dim tbl As ADOXTable
Builder.Open()
tbl = Builder.NewTable("xxx") \'创建表
tbl.AddColumn("日期" ,ADOXType.DateTime) \'增加日期型列
tbl.AddColumn("产品" ,ADOXType.String, 12) \'增加字符型列,长度指定为12
tbl.AddColumn("客户" ,ADOXType.String, 20) \'增加字符列,长度为20
tbl.AddColumn("数量" ,ADOXType.Integer) \'增加整数型列
tbl.AddColumn("备注" ,ADOXType.Text) \'增
Builder.AddTable(tbl) \'增加表
Builder.Close() \'关闭ADOXBuilder

 

同样,你可以做个简单的有错误的例子发上来看看。