我在循环中在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
有人可以帮帮我吗? 谢谢!
答案 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