2017-02-09 2 views
0

Если я отправляю это SQL заявления TADOCommand.execute:Как создать поле таблицы БД под названием SECTION в MS Access?

CREATE TABLE Spice (MODEL TEXT NOT NULL, PART TEXT NOT NULL PRIMARY KEY, SECTION TEXT NOT NULL, FOOTPRINT TEXT NOT NULL, NODELIST TEXT NOT NULL); 

Он говорит:

Syntax error in field definition 

Но если переименовать SECTION в section2 это работает. Я попытался процитировать его «РАЗДЕЛ» и «РАЗДЕЛ», но он появился в названии. Должен ли я каким-то образом определить кавычку или escape-символ? Что я использую MS Access, я мог бы создать поле под названием SECTION с ним!

+2

Вы пробовали '[SECTION]'? – kobik

+0

@kobik Спасибо kobik. Он работает нормально. Если вы создадите ответ, я приму его. –

ответ

3

После отлично работает для меня:

AdoCommand1.CommandText := 
    'CREATE TABLE Spice (MODEL TEXT NOT NULL, PART TEXT NOT NULL PRIMARY KEY, [SECTION] TEXT NOT NULL, FOOTPRINT TEXT NOT NULL, NODELIST TEXT NOT NULL);'; 
    AdoCommand1.Execute; 

Примечания квадратных скобок SECTION, что позволяет избежать столкновений между ключевыми словами SQL и именами объектов в большинстве случаев.

+1

Может ли нижестоящий заботиться о разработке? – MartynA

-2

Раздел является резервным словом в SQL, поэтому вы не должны использовать его для обозначения объекта. Полный список слов приведен ниже.

https://msdn.microsoft.com/en-us/library/ms189822.aspx

+0

Но в этом случае, как MS Access может создать поле SECTION? –

+0

Вы можете посмотреть это объяснение для MS ACCESS. Если вы используете зарезервированное слово для имени поля, Access будет предупреждать вас только о том, что вы можете столкнуться с проблемами. Возможно, ваш инструмент не знает, как справиться с предупреждением, или это одна из этих проблем. https://support.office.com/en-us/article/Access-2007-reserved-words-and-symbols-e33eb3a9-8baa-4335-9f57-da237c63eabe – kubasnack