IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bases de données Delphi Discussion :

nom de colonne = mot réservé


Sujet :

Bases de données Delphi

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 102
    Points : 87
    Points
    87
    Par défaut nom de colonne = mot réservé
    Bonjour

    je dois renommer une colonne nommée DATE dans une table.

    Problème: DATE est un mot réservé : Execption OLE ( j'utilise ADO ) : Utilisation d'un mot réservée, dans ma requete SQL

    J'ai essayé la contre cote : `DATE`
    le crochet : [DATE]
    le préfixage: Table.DATE

    Comment faire ?
    Merci
    Pascal07

  2. #2
    Membre éprouvé Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 14
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Points : 912
    Points
    912
    Par défaut
    Le plus simple c'est bien de modifier le nom de la colonne dans ta base de donnée.
    Le + souvent avec
    Alter column

    De quelle base s'agit-il ?
    Dans le vocabulaire des couturiers seulement, patron est synonyme de modèle.
    Aymond d'Alost

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 102
    Points : 87
    Points
    87
    Par défaut
    C'est une base access MDB, mais ca change rien...

    c'est ADO ( ou OLE ? ) qui veut pas ( ou ne semple pas ) utiliser ce mot réservé DATE.

    Merci, je suis preneur de toute piste.
    Pascal07

  4. #4
    Membre éprouvé Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 14
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Points : 912
    Points
    912
    Par défaut
    Si ADO ne veut et bien il ne veut pas.
    Ce qui d'ailleurs n'est pas tellement surprenant pour le mot "DATE"

    Du coup il faudra que tu changes le nom de ta colonne.
    Ou que tu utilise une vue modifiable si acces le tolère.
    A moins que tu ne cherches pas à modifier tes données.

    Les solutions que j'entrevoie
    1 °) Tu changes de Middle ware et tu supprimes ADO
    2 °) Tu modifie ta colonne (alter column)
    3 °) Tu crée une vue avec un laias sur ta colonne (create view)
    Dans le vocabulaire des couturiers seulement, patron est synonyme de modèle.
    Aymond d'Alost

  5. #5
    Membre confirmé
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Février 2006
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Belgique

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2006
    Messages : 537
    Points : 460
    Points
    460
    Par défaut
    Idée non testée:
    Tu renomme la colonne par exemple: DATES et dans tes requêtes tu mets:
    SELECT DATES AS DATE

    André
    Ils ne savaient pas que c'était impossible, alors ils l'ont fait !

  6. #6
    Expert confirmé

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Leader Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Points : 4 170
    Points
    4 170
    Par défaut
    Citation Envoyé par pascal07 Voir le message
    C'est une base access MDB, mais ca change rien...

    c'est ADO ( ou OLE ? ) qui veut pas ( ou ne semple pas ) utiliser ce mot réservé DATE.

    Merci, je suis preneur de toute piste.
    Pascal07
    Ce serait étonnant. ADO n'interprête pas les requêtes avant de les exécuter. Ce n'est qu'une couche d'adaptation qui transmet les requêtes directement au provider OLEDB.

    C'est plutôt Access qui ne doit pas vouloir de ta requête.
    Tu as essayé de l'exécuter à la main directement dans Access ?

    Quelle est la requête que tu essaie d'exécuter exactement ?

    J'ai essayé la contre cote : `DATE`
    le crochet : [DATE]
    le préfixage: Table.DATE
    Tu peux essayer les double quote. Mais il me semble que pour access, c'est bien les crochets qu'il faut utiliser.

  7. #7
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 897
    Points : 1 561
    Points
    1 561
    Par défaut
    C'est exactement le même problème avec ADO et SQL server. La seule solution que j'ai trouvé a été de renomer le champ incriminé.
    Pensez à utiliser les tags dans le titre.
    Avant de poser une question reportez-vous à la FAQ Delphi
    Respectez les règles du forum.

  8. #8
    Expert confirmé

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Leader Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Points : 4 170
    Points
    4 170
    Par défaut
    Citation Envoyé par Pascal Jankowski Voir le message
    C'est exactement le même problème avec ADO et SQL server. La seule solution que j'ai trouvé a été de renomer le champ incriminé.
    Tu fais quoi exactement pour avoir le problème avec SQL Server ? Je n'ai pas de problèmes de ce type.

  9. #9
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 102
    Points : 87
    Points
    87
    Par défaut
    Voila ma requete, sans formatage sur la colonne DATE

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE ARMOIRE RENAME COLUMN DATE TO DATE_SAISIE

    Pascal07

  10. #10
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 897
    Points : 1 561
    Points
    1 561
    Par défaut
    Citation Envoyé par Franck SORIANO Voir le message
    Tu fais quoi exactement pour avoir le problème avec SQL Server ? Je n'ai pas de problèmes de ce type.
    De mémoire, j'ai un peu de mal à me souvenir du contexte pour reproduire le problème.
    Je ne sais plus si c'était lors de l'utilisation des fonctions pour traiter les dates avec SQL server directement dans la requête.

    Quoi qu'il en soit, depuis j'ai pris l'habitude d'éviter tout mot réservé pour nommer des champs dans une table.
    Pensez à utiliser les tags dans le titre.
    Avant de poser une question reportez-vous à la FAQ Delphi
    Respectez les règles du forum.

  11. #11
    Expert confirmé

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Leader Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Points : 4 170
    Points
    4 170
    Par défaut
    Citation Envoyé par pascal07 Voir le message
    Voila ma requete, sans formatage sur la colonne DATE

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE ARMOIRE RENAME COLUMN DATE TO DATE_SAISIE

    Pascal07
    Tu es sûr que Access accepte la syntaxe ALTER TABLE ... RENAME COLUMN ?
    Parce que SQL Server ne permettant déjà pas de le faire, je doute qu'Access l'accepte !

    Regardes la syntaxe du ALTER TABLE pour access :
    http://msdn.microsoft.com/en-us/library/bb177883.aspx

    Je vois nul part de RENAME COLUMN.

  12. #12
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 102
    Points : 87
    Points
    87
    Par défaut
    je dirais meme plus, je vois rien pour RENOMMER une colonne ?

    Comment on fait ?

    Peut bien que la requète est fausse finalement...(? )

    Merci
    Pascal07

  13. #13
    Expert confirmé

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Leader Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Points : 4 170
    Points
    4 170
    Par défaut
    Je ne pense pas que ce soit possible directement avec Access. Dans SQL Server, on a sp_rename.

    Il reste la solution générique pour restructurer une table :
    - Tu crées une deuxième table avec la nouvelle structure que tu veux.
    - Tu fais une requête pour recopier les données de l'ancienne table vers la nouvelle.
    - Tu supprimes l'ancienne table.
    - Ensuite si tu peux, tu renommes la nouvelle table pour lui donner le nom de la table d'origine, sinon tu recommences la même opération pour renommer la table...

  14. #14
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Malheureusement Access ne permet pas de renommer un champ via DDL.

    Donc je vois cette solution:
    1. Créer le nouveau champ correctement nommé DATE_SAISIE
    2. Recopier les données de DATE vers DATE_SAISIE
    3. Supprimer la colonne DATE


    Ce qui donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
      with ADOQuery1 do
      begin
        // Ajout de la nouvelle colonne correctement nommée
        SQL.Text := 'ALTER TABLE TableTest ADD COLUMN DATE_SAISIE DATETIME';
        ExecSQL;
        // Recopie des données de DATE vers DATE_SAISIE
        SQL.Text := 'UPDATE TableTest SET DATE_SAISIE = [DATE]';
        ExecSQL;
        // Suppression de la colonne DATE
        SQL.Text := 'ALTER TABLE TableTest DROP COLUMN [DATE]';
        ExecSQL;
      end;
    Voilà. Mais le plus simple reste de renommer le champ directement depuis Access.

    @+ Claudius

Discussions similaires

  1. Mot clé comme nom de colonne
    Par C02226 dans le forum InterBase
    Réponses: 4
    Dernier message: 17/01/2013, 13h44
  2. Nom de colonne en plusieurs mots
    Par gassisprog dans le forum Langage SQL
    Réponses: 2
    Dernier message: 17/10/2008, 08h49
  3. [MySQL] mot réservé dans un nom de champ
    Par dreamwanderer dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 10/12/2005, 20h54
  4. Nom de colonne réservée
    Par Pasiphae dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 28/09/2004, 09h25
  5. Year (mot réservé)
    Par Fir dans le forum Langage SQL
    Réponses: 10
    Dernier message: 21/02/2003, 12h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo