'创建外部数据表
Tables("项目表管理").Filter = ""
Tables("项目表管理").Filter = "[数据库名] = '" & e.Form.Controls("数据库名").Value & "' And [表名] = '" & e.Form.Controls("新建表名").Value & "'"
Dim s As String =e.Form.Controls("数据库名").Value
Dim s1 As String =e.Form.Controls("新建表名").Value
'判断创建数据表的环境
If s="" Then
MessageBox.Show("数据库名不能为空!")
Return
End If
If s1 = "" Then
MessageBox.Show("表名不能为空!")
Return
End If
If GetTableNamesFromConnection("" & e.Form.Controls("数据库名").Value & "").Contains(s1)
MessageBox.Show(s1 & " 外部表已经存在,不能创建!")
Return
End If
For Each dt As datatable In DataTables
If dt.Name.Contains(s1) Then
MessageBox.Show(s1 & " 内部表已经存在,不能创建!")
Return
End If
Next
'创建外部表
Dim Builder1 As New ADOXBuilder(s)
Builder1.Open()
Dim tbl2 As ADOXTable = Builder1.NewTable(s1)
For Each dr As DataRow In DataTables("项目表管理").DataRows
If dr("表名") = s1 Then
With tbl2
Select Case dr("列类型")
Case "字符型"
.AddColumn(dr("列名") ,ADOXType.String, dr("字符长度"))
Case "日期型"
.AddColumn(dr("列名") ,ADOXType.DateTime)
Case "整数型"
.AddColumn(dr("列名") ,ADOXType.Integer)
Case "短整数型"
.AddColumn(dr("列名") ,ADOXType.Short)
Case "微整数型"
.AddColumn(dr("列名") ,ADOXType.Byte)
Case "单精度小数型"
.AddColumn(dr("列名") ,ADOXType.Single)
Case "双精度小数型"
.AddColumn(dr("列名") ,ADOXType.Double)
Case "高精度小数型"
.AddColumn(dr("列名") ,ADOXType.Decimal)
Case "逻辑型"
.AddColumn(dr("列名") ,ADOXType.Boolean)
Case "备注型"
.AddColumn(dr("列名") ,ADOXType.Text)
End Select
End With
End If
Next
Builder1.AddTable(tbl2, True, True)
Builder1.Close()
'创建查询表
Dim q As new OuterTableBuilder
q.TableName = s1
q.ConnectionName =s
q.SelectString = "Select * From [s1] "
q.Build
'重新打开项目,加载新增数据表
syscmd.Project.Open(ProjectFile)
MainTable = Tables(s1)
'数据表创建完成.