大家好,今天继续讲解VBA资料库解决方案的第14讲:如何动态的在资料库中建立数据表。我们在什么是资料库中讲解讲过,表是一种关系,那么这种关系可否能实现动态的建立呢?也就是说,我们在程序中用代码建立数据表,是否可以做到呢?为什么要提出这个问题呢?因为我们在做程序时经常会用到写资料库时要建立数据表,而手工建立确实很麻烦,我们考虑要用VBA代码去建立,其实,用代码去建立是完全可以的,也非常的简单。
实例的应用:在一个资料库mydata中已经存在了一个表」员工记录」,我们要建立另外的一个表「信息参考」,这个表中的内容是为了储存处包括各个部门的部门名称,和部门的定岗人数两个栏位,我们要看看这个代码该如何完成的。代码如下:
Sub mynztableJL()
Dim cnADO, rsADO As Object
Dim strPath, myTable, strSQL As String
Set cnADO = CreateObject("ADODB.Connection")
Set rsADO = CreateObject("ADODB.Recordset")
strPath = ThisWorkbook.Path & "mydata2.accdb"
myTable = "信息参考"
TT = False
cnADO.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath
Set rsADO = cnADO.OpenSchema(20, Array(Empty, Empty, myTable, Empty))
If Not rsADO.EOF Then
MsgBox "工作表已经存在,是否删除数据表?", vbInformation, "数据表判断"
strSQL = "DROP TABLE " & myTable
cnADO.Execute strSQL
TT = True
Else
MsgBox "数据表不存在,下面将建立工作表", vbInformation, "数据表判断"
End If
strSQL = "CREATE TABLE " & myTable _
& "(部门 text(20) not null,总人数 text(10) not null)"
cnADO.Execute strSQL
If TT <> True Then
MsgBox "创建数据表成功!" & vbCrLf & "数据表名称为:" & myTable, , "创建数据表"
Else
MsgBox "创建数据表重新创建成功!" & vbCrLf & "数据表名称为:" & myTable, , "创建数据表"
End If
rsADO.Close
cnADO.Close
Set rsADO = Nothing
Set cnADO = Nothing
End Sub
代码的截图: