如何覆盖在VBA中创建的表?

时间:2011-07-20 20:00:48

标签: ms-access access-vba

我在循环中在VBA中创建一个表,当我运行代码时,会创建一个表。 但是下次我运行它时会出现一个错误,告诉我该表存在且代码的其余部分未执行。 如何让它覆盖现有的表(来自上一次运行)?

这是我的代码:

Option Compare Database

Public Function createTables()

    Dim db As DAO.Database
    Dim tdf As DAO.TableDef
    Dim rst As DAO.Recordset
    Dim fld As DAO.Field
    Dim strSQL As String

    strSQL = "Select SKUS from SKUS"
    Set db = CurrentDb()
    Set rst = db.OpenRecordset(strSQL)
    Set fld = rst.Fields("SKUS")

    'MsgBox fld.Value

    rst.MoveFirst
    Do While Not rst.EOF
        Set tdf = db.CreateTableDef(fld.Value)

        Set fld = tdf.CreateField("SKUS", dbText, 30)
        tdf.Fields.Append fld

        Set fld = tdf.CreateField("Count", dbInteger)
        tdf.Fields.Append fld

        db.TableDefs.Append tdf

        rst.MoveNext
    Loop

End Function

有人可以帮帮我吗? 谢谢!

2 个答案:

答案 0 :(得分:0)

您可以使用以下功能检查表格是否存在。

Public Function TableExists(TabName As String) As Boolean

    Dim db As DAO.Database
    Dim Sdummy As String

    Set db = CurrentDb()

    On Error Resume Next
    Sdummy = db.TableDefs(TabName).Name
    TableExists = (Err.Number = 0)

End Function

如果函数返回true,则发出以下sql语句:

DROP TABLE SKUS

答案 1 :(得分:0)

我会在尝试重新创建表之前删除该表:

db.TableDefs.Delete fld.Value