DoCmd.Run SQL Оператор CREATE TABLE со значениями DEFAULT с использованием vba - PullRequest
1 голос
/ 05 мая 2020

Я использую VBA в ms Access для запуска оператора SQL. Когда я пытаюсь запустить его, он всегда показывает «Синтаксическая ошибка в операторе создания таблицы». Вы заметили мою ошибку? Я пытаюсь уже более 3 часов ...

Private Sub Btn_create report_Click()


Dim SQL_2 As String

SQL_2 ="CREATE TABLE TR_Customer_data" & _
"[Field 1] CHAR(30) DEFAULT '1'" & _
"[Field 2] CHAR(30) DEFAULT 'MCR'" & _
"[Field 3] CHAR(30) DEFAULT 'GE34567'" & _
"[Field 4] CHAR(30) DEFAULT 'apple and bananas'" & _
"[Field 5] CHAR(30)" & _
"[Field 6] CHAR(30)" & _
"[Field 7] CHAR(30) DEFAULT '192.0.0.1'" & _
"[Field 8] CHAR(30)" & _
"[Field 9] CHAR(30)" & _
"[Field 10] CHAR(30)" & _
"[Field 11] CHAR(30) DEFAULT 'CPR'" & _
"[Field 12] CHAR(30) DEFAULT '7.0'" & _
"[Field 13] CHAR(30)" & _
"[Field 14] CHAR(30)" & _
"[Field 15] CHAR(30)" & _
"[Field 16] CHAR(30)" & _
"[Field 17] CHAR(30)" & _
"[Field 18] CHAR(30) DEFAULT 'John.Doe@gmail.com'" & _
"[Field 19] CHAR(30) DEFAULT 'John.Doe@gmail.com'" & _
"[Field 20] CHAR(30) DEFAULT 'town/city'" & _
"[Field 21] CHAR(30)"

DoCmd.RunSQL SQL_2`
End Sub

Вы можете помочь мне обнаружить мою ошибку?

1 Ответ

1 голос
/ 05 мая 2020

Допустимый оператор Access DDL CREATE TABLE должен иметь разделенный запятыми список определений полей, заключенный в пару круглых скобок после имени таблицы. В заявлении, созданном кодом в вашем вопросе, отсутствуют запятые и заключающие скобки.

Вот действительный оператор, который я тестировал в Access 2010:

CREATE TABLE TR_Customer_data ([Field 1] CHAR(30) DEFAULT "1",[Field 2] CHAR(30) DEFAULT "MCR")

Я использовал этот VBA для создайте и выполните этот оператор:

Dim SQL_2 As String

SQL_2 = "CREATE TABLE TR_Customer_data (" & _
    "[Field 1] CHAR(30) DEFAULT ""1""," & _
    "[Field 2] CHAR(30) DEFAULT ""MCR"")"
Debug.Print SQL_2

'DoCmd.RunSQL SQL_2 '<- No! Will not support `DEFAULT` keyword
CurrentProject.Connection.Execute SQL_2

Примечания:

  • DEFAULT не поддерживается DoCmd.RunSQL ... он всегда будет выдавать вам эту ошибку 3290, «Синтаксическая ошибка в операторе CREATE TABLE.» Выполните оператор из CurrentProject.Connection или с помощью другого метода, основанного на OleDb.
  • Используйте двойные кавычки, окружающие значения по умолчанию в тексте вашего оператора DDL. Если вместо этого вы используете одинарные кавычки, они будут включены как часть значения по умолчанию. И при построении оператора в VBA используйте две двойные кавычки, где вы хотите, чтобы 1 в завершенном выражении.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...