Как ждать, пока управление выполнением вернется после удаления таблицы? - PullRequest
3 голосов
/ 23 июня 2010

У меня есть следующий код:

CurrentDb.Execute "DROP TABLE [" & DatabaseName & "].[" & TableName & "];"

Что удалит таблицу из базы данных MS Access. Обычно это делается с использованием базы данных в общей сети.

Как я могу убедиться, что метод DROP завершен, прежде чем позволить элементу управления перейти к следующей строке в моем коде?

Это делается в VBA MS Access 2003; но мне было бы интересно, если версия влияет на ответ.

Ответы [ 2 ]

2 голосов
/ 23 июня 2010

Вот мой взгляд на метод 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
0 голосов
/ 23 июня 2010

Вы можете написать цикл с вашей командой CurrentDb.Execute внутри.Внутри цикла вы храните в переменной количество таблиц с именем TableName.Пока это число = 1, вы не можете выйти из цикла.Когда число становится равным нулю, вы можете выйти из цикла и продолжить выполнение.

...