《Foxtable数据库应用开发宝典》介绍了4种创建表结构的方法,这里介绍第5种,是最好的。理由是:用户可以看到的表结构不是开发者所能决定的,所以,创建表前必须征求用户的意见,此时的征求意见内容不仅是表名、列名、标题、类型、长度、表达式,还有顺序,显然,这些内容应该先在Excel表中编写、修改、排序、定稿。直接利用已经完善的、完整的Excel形式的表结构,再结合ADOXBuilder,就可以快速创建表结构。
1
下列代码所用的Excel表格形式为:A列表名、B列列名、C列标题、D列类型、E列长度、F列表达式。
2
创建新项目,在命令窗口执行下列代码动态创建新的表和列。
3
重新打开项目,查看添加结果。
4
后续完善工作:需改为数字开头的列用手工或代码设置标题;增加或插入表达式列、长整数列。
Dim filename As String
Dim dlg As New OpenFileDialog
dlg.Filter = "Excel文件|*.xls;*.xlsx"
If dlg.ShowDialog = DialogResult.OK Then
filename = dlg.FileName
Else
Return Nothing
End If
Dim Builder As New ADOXBuilder
Dim tbl As ADOXTable
Dim App As New MSExcel.Application
Dim book As MSExcel.WorkBook =
App.WorkBooks.Open(filename)
Dim ws As MSExcel.WorkSheet =
book.WorkSheets(1)
Dim rg As MSExcel.Range = ws.usedRange
Dim str1,str2,bm,lx As String
Dim i,k As Integer
Builder.Open()
app.visible = False
For i = 1 To Rg.Rows.Count
Str1 = Ws.Cells(i,1).value
Str2 = Ws.Cells(i,2).value
If str1 = Nothing AndAlso
str2 = Nothing Then '空行
Continue For
End If
If str2 = Nothing Then '第二列空则就是表名所在行,str1为表名
If bm IsNot
Nothing Then
Builder.AddTable(tbl) '用AddTable将创建的表增加到Builder中
End If
bm =
str1.trim.ToUpper
tbl =
Builder.NewTable(bm) '用NewTable方法创建表
Else '为列名
str1 =
Ws.Cells(i,6).value
If str1 IsNot
Nothing Then '是表达式列
Continue For
End If
Lx =
Ws.Cells(i,4).value
Select Case
lx.trim.ToLower
Case "text"
tbl.AddColumn(str2,ADOXType.Text)
Case "datetime"
tbl.AddColumn(str2,ADOXType.DateTime)
Case "boolean"
tbl.AddColumn(str2,ADOXType.Boolean)
Case "single"
tbl.AddColumn(str2,ADOXType.Single)
Case "double"
tbl.AddColumn(str2,ADOXType.Double)
Case "integer"
tbl.AddColumn(str2,ADOXType.Integer)
Case "string"
K = Ws.Cells(i,5).value
tbl.AddColumn(str2,ADOXType.String,k)
Case "long"
Continue For
End Select
End If
Next
Builder.AddTable(tbl)
Builder.Close()
app.visible = True
[此贴子已经被作者于2019/8/19 15:19:10编辑过]