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 :

Access et colonne d'une table


Sujet :

Bases de données Delphi

  1. #1
    Membre confirmé

    Inscrit en
    Novembre 2002
    Messages
    744
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 744
    Points : 500
    Points
    500
    Par défaut Access et colonne d'une table
    Bonjour a tous,

    Je suis en train de créer une table dans une base ACCESS depuis delphi 7,et donc je commence a me pencher sur le langage SQL.

    Cette table peut avoir un besoin supplémentaire de colonnes en fonction des données d'entrées (un fichier).

    Avant d'envoyer les données dans ma table, je voudrais donc vérifier que toutes les colonnes dans lesquelles je vais envoyer mes données existes.

    Existe t il une méthode, requête , pour contrôler l'existence d'une colonne dans une table.
    Que ce passe t il ? si je crée une colonne qui existe déjà, rien de change ou les données de l'ancienne sont supprimées et on a une nouvelle colonne vide ?

    merci pour votre aide...

    bonne aprem .
    Bye et bon code...

    Ce n'est pas tant l'aide de nos amis qui nous aide , mais notre confiance dans cette aide .

  2. #2
    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
    Citation Envoyé par petitcoucou31 Voir le message
    Existe t il une méthode, requête , pour contrôler l'existence d'une colonne dans une table.
    Tu peux utiliser FindField de TxxxTable ou TxxxQuery.

    Citation Envoyé par petitcoucou31 Voir le message
    Que ce passe t il ? si je crée une colonne qui existe déjà, rien de change ou les données de l'ancienne sont supprimées et on a une nouvelle colonne vide ?
    Tu auras, en toute logique, une erreur d'exécution, donc la structure de la table restera inchangée.

    @+ Claudius.

  3. #3
    Membre confirmé

    Inscrit en
    Novembre 2002
    Messages
    744
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 744
    Points : 500
    Points
    500
    Par défaut
    salut cl@udius

    j'ai bien trouvé la méthode FindField dans le TADOQuery que j'utilise. mais elle me retourne nil que ma colonne existe ou pas ! ceci marche t il aussi pour les noms de colonne ou seulement pour les champs de données de la table?

    voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     ....
       if ADOQuery1.FindField(NomColonne[i]) = nil then 
       begin
            With ADOQuery1.SQL do
            begin
                 Clear;
                 Add('ALTER TABLE '+ TableName +' ADD '+ NomColonne[i] + genre );
                 ADOQuery1.ExecSQL;
             end;
       end;
    ....
    Merci..
    Bye et bon code...

    Ce n'est pas tant l'aide de nos amis qui nous aide , mais notre confiance dans cette aide .

  4. #4
    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
    Re,

    J'avais oublié qu'il existait la méthode GetFieldNames de TADOConnection.
    Tu peux donc faire quelque chose comme cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    function FieldExists(Cnx: TADOConnection; const TableName, FieldName: string): Boolean;
    var
      SL: TStringList;
      I: Integer;
    begin
      SL := TStringList.Create;
      try
        Cnx.GetFieldNames(TableName, SL);
        Result := SL.Find(FieldName, I);
      finally
        SL.Free;
      end;
    end;
     
    // appel
    begin
      if FieldExists(ADOConnection1, 'MaTable', 'MonChamp') then
        ShowMessage('Trouvé')
      else
        ShowMessage('Non trouvé  !');
    end;
    @+ Claudius

  5. #5
    Membre confirmé

    Inscrit en
    Novembre 2002
    Messages
    744
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 744
    Points : 500
    Points
    500
    Par défaut
    merci Cl@udius .. ça marche comme il faut !!

    bye
    Bye et bon code...

    Ce n'est pas tant l'aide de nos amis qui nous aide , mais notre confiance dans cette aide .

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 25/01/2010, 14h16
  2. Réponses: 1
    Dernier message: 06/10/2009, 19h56
  3. Réponses: 2
    Dernier message: 20/10/2007, 02h24
  4. Réponses: 5
    Dernier message: 27/12/2006, 16h56
  5. Réponses: 1
    Dernier message: 22/12/2005, 09h03

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