2017-02-09 2 views
0

Si j'envoie cette instruction SQL par TADOCommand.execute:Comment puis-je créer un champ de table DB appelé SECTION dans 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); 

Il dit:

Syntax error in field definition 

Mais si je renomme SECTION pour SECTION2 cela fonctionne. J'ai essayé de le citer "SECTION" et "SECTION" mais il est apparu dans le nom. Dois-je définir le guillemet ou l'échappement en quelque sorte? Whan J'utilise MS Access, je pourrais créer un champ appelé SECTION avec! La section est un mot de réserve dans SQL, vous ne devriez donc pas l'utiliser pour nommer un objet.

+2

Avez-vous essayé '[SECTION]'? – kobik

+0

@kobik Merci, kobik. Ça fonctionne bien. Si vous créez une réponse, je l'accepterai. –

Répondre

3

suivant fonctionne très bien pour moi:

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; 

Notez les crochets autour SECTION, ce qui évite les collisions entre les mots-clés SQL et les noms d'objets dans la plupart des cas.

+1

Est-ce que le downvoter se souciait d'élaborer? – MartynA

-2

Pour une liste complète des mots, voir le lien ci-dessous.

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

+0

Mais dans ce cas comment MS Access peut-il créer un champ appelé SECTION? –

+0

Vous pouvez consulter cette explication pour MS ACCESS. Si vous utilisez un mot réservé pour un nom de champ, Access vous avertira uniquement que vous pouvez rencontrer des problèmes. Il est possible que votre outil ne sache pas comment gérer l'avertissement ou que ce soit l'un de ces problèmes. https://support.office.com/fr-fr/article/Access-2007-reserved-words-and-symbols-e33eb3a9-8baa-4335-9f57-da237c63eabe – kubasnack