Допустимый оператор 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 в завершенном выражении.