我有以下代码:
CurrentDb.Execute "DROP TABLE [" & DatabaseName & "].[" & TableName & "];"
将从MS Access数据库中删除表。通常,这是使用共享网络上的数据库完成的。
在允许控件转到代码中的下一行之前,如何确保DROP
方法完成?
这是在VBA MS Access 2003中完成的;但如果版本影响答案,我会感兴趣。
答案 0 :(得分:2)
以下是我对Loop方法的看法:
Public Function DeleteTable(DatabaseName as String, TableName as String) as Boolean
DeleteTable = False
CurrentDb.Execute "DROP TABLE [" & DatabaseName & "].[" & TableName & "];"
Do
Loop Until TableExists(TableName, DatabaseName) = False
DeleteTable = True
End Function
Public Function TableExists(TableName As String, DatabaseName As String) As Boolean
If 0 = CurrentDb.OpenRecordset("SELECT COUNT(*) As Count FROM [" & DatabaseName & "].[MSysObjects] WHERE [Name] = '" & TableName & "';").Fields("Count").Value Then
TableExists = False
Else
TableExists = True
End If
End Function
答案 1 :(得分:0)
您可以在里面编写一个包含CurrentDb.Execute命令的循环。 在循环内部,您可以在变量中存储名为TableName的表的数量。 在此数字= 1之前,您无法退出循环。 当数字变为最后为零时,您可以退出循环并继续执行。