Доступ: создать таблицу, если она не существует - PullRequest
3 голосов
/ 26 мая 2009

Можете ли вы дать MS Access эквивалент MySQL 'CREATE TABLE ЕСЛИ НЕ СУЩЕСТВУЕТ ...'?

Обновление

Как то так

IF <no such table>
CREATE TABLE history(<fields>)

тоже подойдет

Ответы [ 3 ]

4 голосов
/ 26 мая 2009

Вот как это сделать через VBA:

Sub ViaVBA()
    Const strSQLCreateFoo_c As String = _
          "CREATE TABLE Foo" & _
          "(" & _
          "MyField1 INTEGER," & _
          "MyField2 Text(10)" & _
          ");"
    Const strSQLAppendBs_c As String = _
          "INSERT INTO Foo (MyField1, MyField2) " & _
          "SELECT Bar.MyField1, Bar.MyField2 " & _
          "FROM Bar " & _
          "WHERE Bar.MyField2 Like 'B*';"

    If Not TableExists("foo") Then
        CurrentDb.Execute strSQLCreateFoo_c
    End If
    CurrentDb.Execute strSQLAppendBs_c
End Sub

Private Function TableExists(ByVal name As String) As Boolean
    On Error Resume Next
    TableExists = LenB(CurrentDb.TableDefs(name).name)
End Function
4 голосов
/ 26 мая 2009

Для кода DDL SQL ответ - нет. ACE / Jet SQL не имеет никакого синтаксиса управления потоком, и ACE / Jet PROCEDURE может выполнять только один оператор SQL. Да, все верно: ACE / Jet PROCEDURE не поддерживает процедурный код: (

0 голосов
/ 13 июня 2009

Зачем вам создавать таблицу? Если это для временного хранения данных, то это нормально, обычно это не требуется.

См. Страницу TempTables.MDB на моем веб-сайте, на которой показано, как использовать временный MDB в вашем приложении. http://www.granite.ab.ca/access/temptables.htm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...