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 :

Suppression des champs d'une table


Sujet :

Bases de données Delphi

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 105
    Par défaut Suppression des champs d'une table
    Bonsoir à toutes et à tous,

    Encore un souci avec ma base de données...

    Lorsque je veux supprimer dynamiquement un champ d'une table, j'utilise le code SQL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Query.close;
    Query.SQL.text:='ALTER TABLE XXX DROP YYY';
    Query.ExecSQL;
    Ça fonctionne sauf que juste après l'exécution s'interrompt avec l'erreur:

    unsuccesfull metadata update column YYY does not exist in Table/View XXX
    D'où ça peut venir ?

    J'utilise aussi un DataSetProvider, un ClientDataSet et un DataSource relié à un DBGrid.

    Merci de votre aide.

  2. #2
    Membre confirmé Avatar de abdelghani_k
    Inscrit en
    Octobre 2002
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Octobre 2002
    Messages : 184
    Par défaut
    Je crois que tu utlises des champs persistants (YYY est un champ persistant dans la table XXX). Un champ persistant est un champ ajouté dans l'éditeur de champ de la table (double clic sur la table).

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 105
    Par défaut
    Merci pour ta réponse abdelghani_k.

    J'ai bien vérifié et l'éditeur de champ de la table est vide (le Query, le ClientDataSet et le DBGrid) .

    Une autre idée ?

  4. #4
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut
    Slt;
    unsuccesfull metadata update column YYY does not exist in Table/View XXX
    c'est le champ qui n'existe pas dans ta table , vérifiée l'orthographe !!!! ou peut étre le champ réellement n'existe pas !!!!
    donne plus de détails sur ta table

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 105
    Par défaut
    Bonjour,

    Il n'existe plus parce que je l'ai volontairement supprimé dynamiquement...

    Pour être plus précis j'ai une table avec 2 champs fixes que je dois garder ('NMR' et 'NOM') et d'autres champs qui varient en fonctions des besoins ('CHAMP1', 'CHAMP2', 'CHAMP3', ..., 'CHAMPn'). Je souhaite donc effacer les champs intitulés 'CHAMPx' et ensuite les recréer en fonction de mon nouveau n, qui peut varier à chaque utilisation (j'espère être assez clair ).

    Voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    j:=Query.FieldCount;
    for i := 0 to j - 1 do begin
      nom:=Query.Fields[i].FullName;
      if leftstr(nom,5)='CHAMP' then begin
        Query.Close;
        Query.SQL.Text:='ALTER TABLE XXX DROP '+ nom;
        Query.ExecSQL;
        j:=j-1;
      end;
    end;

  6. #6
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut
    Re , excuse je veut pas m'ingérai mais pourquoi enlevé un champ déjà ajouté , et si ce champ contiens des informations là vous aurai une perte d'information très importante....

  7. #7
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 105
    Par défaut
    Je dois modifier les champs de la table en fonction des besoins de l'utilisateur et mon idée est de relier la table modifiée à un DBGrid. Je pensais que c'était la façon la plus simple d'avoir un tableau dynamique mais apparemment non.

  8. #8
    Expert confirmé
    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 : 62
    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
    Par défaut
    Salut

    Si tu travailles vraiment avec le même Query (DML et DDL) cela ne marchera pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Query.SQL.Text:='ALTER TABLE XXX DROP '+ nom;
    ExecSQL;
    puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nom:=Query.Fields[i].FullName;
    A ce moment que contient Fields ? Pas sûr que ce soit encore les champs de la table.

    Il n'y a pas d'autre solution que de manipuler dynamiquement cette table ?

    @+ Claudius

  9. #9
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut
    Re ; là il suffit de créé un tableau dynamique sans passé par la création de table et des champs c'est un avis !!! vous pouvait faire simple fait un tour
    http://delphipage.free.fr/tableaux.html

  10. #10
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 105
    Par défaut
    J'ai essayé autre chose: détruire la table avec un 'DROP TABLE XXX' et la recréer mais cette fois-ci j'obtiens le message d'erreur suivant:

    unsuccesfull metadata update object XXX is in use
    Ce qui revient à la même situation.

    J'ai pourtant désactivé ou fermé les composants qui utilisent la table, rien n'y fait .

  11. #11
    Membre confirmé Avatar de abdelghani_k
    Inscrit en
    Octobre 2002
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Octobre 2002
    Messages : 184
    Par défaut
    le message :

    unsuccesfull metadata update object XXX is in use

    indique que XXX est ouverte en cours d'utilisation.
    tu fait
    avant d'éxecuter la requete ALTER;

  12. #12
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 105
    Par défaut
    Ben pourtant tout est fermé, je n'arrive pas à trouver quel élément est relié à ma table .

    Je vais laisser tomber la construction d'une table et je vais créer un tableau comme me le suggère redoran...

Discussions similaires

  1. [AC-2007] Suppression des champs d'une table
    Par Cyril dLL dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 24/11/2013, 08h48
  2. Procedure de suppressions des champs d'une table
    Par Kiriyama dans le forum Sybase
    Réponses: 1
    Dernier message: 07/04/2009, 16h47
  3. récupérer la liste des noms des champs d'une table
    Par la_didise dans le forum Access
    Réponses: 2
    Dernier message: 29/05/2006, 16h55
  4. nom des champs d'une table
    Par K-ZimiR dans le forum Requêtes
    Réponses: 6
    Dernier message: 22/04/2004, 14h21
  5. Ordre des champs dans une table
    Par patapetz dans le forum Outils
    Réponses: 5
    Dernier message: 30/07/2003, 06h53

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