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 :

[ADO][Access][SQL]Renommer un champ


Sujet :

Bases de données Delphi

  1. #1
    Membre régulier Avatar de dleu
    Profil pro
    Inscrit en
    Août 2004
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 169
    Points : 77
    Points
    77
    Par défaut [ADO][Access][SQL]Renommer un champ
    Bonjour,

    J'ai un problème pour renommer un champ d'une table access à l'éxécution et j'ai donc besoin de vos lumières.

    Access n'autorise pas de renommer un champ simplement. Il faut en passer par la séquence suivante :
    La requète suivante crée un champ temporaire de type booléen (Vrai/Faux):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    req:= 'ALTER TABLE Livres ADD temp BIT'
    Ensuite, à l'aide d'une requète, je copie les valeurs de mon champ dans la requète temporaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    req:='UPDATE Livres SET temp = '+QuotedStr(AQLivres.Fields[19].FieldName); <== ICI se produit l'erreur
    J'efface le champ à renommer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    req:= 'ALTER TABLE Livres DROP '+QuotedStr(AQLivres.Fields[19].FieldName);
    Je crée un nouveau champ avec le nouveau nom :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    req:= 'ALTER TABLE Livres ADD '+QuotedStr(Edit1.Text)+' BIT'
    Enfin, je recopie les données du champ temporaire dans le nouveau champ:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    req:='UPDATE Livres SET '+QuotedStr(Edit1.Text)+' = temp';
    Et pour terminer, j'efface le champ temporaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    req:= 'ALTER TABLE Livres DROP temp';
    Eh bien, ça ne marche pas : J'ai une erreur lorsque je copie mes données dans le champ temporaire : Une Ole Exception : Type de données incompatible dans l'expression du critère.

    Pourtant le champ indiqué par QuotedStr(AQLivres.Fields[19].FieldName) est bien de type booléen comme le champ créé temporairement. Je ne comprends donc pas pourquoi j'ai cette erreur.

    Merci de m'aider.

    Didier

  2. #2
    Membre averti
    Avatar de delphichem
    Inscrit en
    Octobre 2002
    Messages
    280
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 280
    Points : 338
    Points
    338
    Par défaut
    Le type BIT est un type booléen qui n'accepte que 2 valeurs True ou False.
    Avec ta requette tu essaies d'affecter une chaine de caractère au champ booléen se qui n'est pas admis.

  3. #3
    Membre régulier Avatar de dleu
    Profil pro
    Inscrit en
    Août 2004
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 169
    Points : 77
    Points
    77
    Par défaut
    Quelle chaine de caractère ?

    En admettant que QuotedStr(AQLivres.Fields[19].FieldName) soit le champ dont le nom est 'recueil de nouvelles' par exemple, ma requète est en fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    req:='UPDATE Livres SET temp = "recueil de nouvelles"'
    Or ce champ "recueil de nouvelles" est bien un champ booléen.

    Où se trouve alors l'incompatibilité ?

  4. #4
    Membre régulier Avatar de dleu
    Profil pro
    Inscrit en
    Août 2004
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 169
    Points : 77
    Points
    77
    Par défaut
    Bon, la solution m'a été donné par Didier L dans le forum access.

    Citation Envoyé par Didier L
    Dans Access les Guillemets sont interprétés comme des délimitateurs de texte, donc tu essaye de mettre à jour un booléan avec du texte.
    Remplace les guillemets par les [ !
    Merci à lui et à delphichem pour leur aide.

    A+

    Didier

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [ADO - Access] Formatage d'un champ calculé
    Par dleu dans le forum Bases de données
    Réponses: 4
    Dernier message: 11/06/2008, 16h30
  2. Réponses: 3
    Dernier message: 24/01/2008, 11h50
  3. ACCESS-SQL-type de champs
    Par couret3000 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 03/11/2007, 08h17
  4. [Access][SQL] Filtrer un champ text qui peut être NULL
    Par aumax1 dans le forum VBA Access
    Réponses: 1
    Dernier message: 04/04/2006, 08h40
  5. [SQL] Renommer un champ dans une requête
    Par martonpylon12 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 15/11/2003, 01h59

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