这是复制表结构的通用代码,如果是外部数据源,记得给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编辑过]