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

 Delphi Discussion :

Delphi, SQL, exportation de donnees vers un fichier texte


Sujet :

Delphi

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Djibouti

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2020
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Delphi, SQL, exportation de donnees vers un fichier texte
    Bonjour,

    J'ai deux tables. Une table ARTISTES et une table OEUVRES. Je souhaite exporter les données de ces deux tables a l'aide d'une requête SQL dans DELPHI. Sauf que je ne sais pour quelle raison l'exportation a échoué. Merci

    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
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    procedure TForm6.ExportData(sNomArtiste, sPrenomArtiste: String);
    begin
        MyQuery1 := TADOQuery.Create(Self);
        MyQuery1.Connection := ADOConnection1;
     
        try
            MyQuery1.Close;
            MyQuery1.SQL.Clear;
            MyQuery1.Sql.Text := 'SELECT ARTISTES.*, OEUVRES.NOM, OEUVRES.DATE_SORTIE FROM ARTISTES ' +
                                 'LEFT JOIN OEUVRES ' +
                                 'ON ARTISTES.ID_ARTISTE = OEUVRES.ID_ARTISTE ' +
                                 'WHERE ARTISTES.prenom = :PRENOM AND ARTISTES.nom = :NOM';     // Les : Doivent etre collés au parametre
            MyQuery1.Parameters[0].Value := sNomArtiste;
            MyQuery1.Parameters[1].Value := sPrenomArtiste;
            MyQuery1.Open;
     
            AssignFile(Fichier,ExtractFilePath(Application.ExeName)+'recupData.txt');
            Rewrite(Fichier);
     
            MyQuery1.first;
     
            While not MyQuery1.Eof do
            begin
               Append(Fichier); //Prépare un fichier existant pour l'ajout de texte
     
               Writeln(Fichier,'ID_ARTISTE: ', MyQuery1.Fields[0].AsInteger,',  ',
                               'NOM_ARTISTE: ',MyQuery1.Fields[1].AsString,',  ',
                               'PRENOM_ARTISTE: ',MyQuery1.Fields[2].AsString,',  ',
                               'DATE_NAISSANCE: ',FormatDateTime('yyyy-mm-dd',MyQuery1.Fields[3].AsDateTime),',  ',
                               'DATE_DECES: ',FormatDateTime('yyyy-mm-dd',MyQuery1.Fields[4].AsDateTime),',  ', //Faut regler le pb de Yasser Jradi, sa date de deces est nulle, mais ca lui affecte quand meme une date aléatoire!!!
                               'OEUVRES_NOM: ',MyQuery1.Fields[5].AsString,',  ',
                               'DATE_SORTIE:', FormatDateTime('dd-mmm-yyyy',MyQuery1.Fields[6].AsDateTime)); //Writeln écrit une marque fin de ligne
               CloseFile(Fichier);
     
               MyQuery1.Next;
            end;
     
        finally
            ShowMessage (MyQuery1.Parameters[0].Value);
            ShowMessage (MyQuery1.Parameters[1].Value);
            //ShowMessage (MyQuery1.Fields[0].AsInteger);
            ShowMessage ('échec de l''exportation');
        end;
     
    end;

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Citation Envoyé par bour-geon Voir le message
    Bonjour,

    J'ai deux tables. Une table ARTISTES et une table OEUVRES. Je souhaite exporter les données de ces deux tables a l'aide d'une requête SQL dans DELPHI. Sauf que je ne sais pour quelle raison l'exportation a échoué. Merci
    difficile à dire, message d'erreur ? fichier vide ?

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    procedure TForm6.ExportData(sNomArtiste, sPrenomArtiste: String);
    begin
        MyQuery1 := TADOQuery.Create(Self);
        MyQuery1.Connection := ADOConnection1;
     
        try
    // aucun intérêt sur un Query qui vient d'être créé
    //        MyQuery1.Close; 
    //       MyQuery1.SQL.Clear;
     
            MyQuery1.Sql.Text := 'SELECT ARTISTES.*, OEUVRES.NOM, OEUVRES.DATE_SORTIE FROM ARTISTES ' +
                                 'LEFT JOIN OEUVRES ' +
                                 'ON ARTISTES.ID_ARTISTE = OEUVRES.ID_ARTISTE ' +
                                 'WHERE ARTISTES.prenom = :PRENOM AND ARTISTES.nom = :NOM';     // Les : Doivent etre collés au parametre
            MyQuery1.Parameters[0].Value := sNomArtiste;
            MyQuery1.Parameters[1].Value := sPrenomArtiste;
            MyQuery1.Open;
     
    // c'est quoi le type de 'Fichier' ?
            AssignFile(Fichier,ExtractFilePath(Application.ExeName)+'recupData.txt');
            Rewrite(Fichier);
     
    // aucun intérêt sur un Query qu'on vient d'ouvrir
    //        MyQuery1.first;
     
            While not MyQuery1.Eof do
            begin
    // le fichier est déjà ouvert !
    //           Append(Fichier); //Prépare un fichier existant pour l'ajout de texte
     
    // il doit être du type TextFile
               Writeln(Fichier,'ID_ARTISTE: ', MyQuery1.Fields[0].AsInteger,',  ',
                               'NOM_ARTISTE: ',MyQuery1.Fields[1].AsString,',  ',
                               'PRENOM_ARTISTE: ',MyQuery1.Fields[2].AsString,',  ',
                               'DATE_NAISSANCE: ',FormatDateTime('yyyy-mm-dd',MyQuery1.Fields[3].AsDateTime),',  ',
                               'DATE_DECES: ',FormatDateTime('yyyy-mm-dd',MyQuery1.Fields[4].AsDateTime),',  ', //Faut regler le pb de Yasser Jradi, sa date de deces est nulle, mais ca lui affecte quand meme une date aléatoire!!!
                               'OEUVRES_NOM: ',MyQuery1.Fields[5].AsString,',  ',
                               'DATE_SORTIE:', FormatDateTime('dd-mmm-yyyy',MyQuery1.Fields[6].AsDateTime)); //Writeln écrit une marque fin de ligne
    // pourquoi le fermer après chaque ligne ?!
    //           CloseFile(Fichier);
     
               MyQuery1.Next;
            end;
     
    // là il manque la fermeture du fichier  que l'on peut mettre dans un try/finally
        CloseFile(fichier)
     
    // ce n'est pas un finally pour un échec !
    //    finally
       except
        on e: Exception do
        begin
            ShowMessage (MyQuery1.Parameters[0].Value);
            ShowMessage (MyQuery1.Parameters[1].Value);
            //ShowMessage (MyQuery1.Fields[0].AsInteger);
            ShowMessage ('échec de l''exportation ' + e.Message);
        end
       end;
     
    // il manque la libération du Query (qui elle se fait dans un try/finally
     
    end;
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre confirmé Avatar de blonde
    Femme Profil pro
    Développeur Delphi
    Inscrit en
    Septembre 2003
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Delphi

    Informations forums :
    Inscription : Septembre 2003
    Messages : 278
    Points : 477
    Points
    477
    Par défaut
    C'est le contenu de ton fichier qui ne correspond pas à ce que tu attends ? ou ton fichier n'existe pas ?

    Sinon, c'est le message "ShowMessage ('échec de l''exportation');" qui t'inquiète, c'est normal qu'il apparaisse, tu l'as glissé dans le Finaly.

    Regarde bien le code de Paul, il a expliqué en commentaires ce que tu peux améliorer.

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    529
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 529
    Points : 464
    Points
    464
    Par défaut
    bonjour, vous allez peut être trouver ça bizard mais..
    utilisez write(fichier,.....) au lieu de writeln pour remplir la ligne et après utlisez writeln(fichier) pour passer à la ligne suivante.
    Deux, n'apprendront pas; le timide et l'arrogant

  5. #5
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 490
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 490
    Points : 2 752
    Points
    2 752
    Billets dans le blog
    10
    Par défaut
    Attention ! :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyQuery1.Fields[0].AsInteger
    Il serait préférable d'utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyQuery1.Fields[0].AsString
    Peut être utiliser un TStringlist en lieu et place de AssignFile ...

  6. #6
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 679
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 679
    Points : 13 082
    Points
    13 082
    Par défaut
    Pour que la requête renvoie un résultat, ben il faudrait peut-être que les paramètres soient dans le bon ordre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    MyQuery1.Sql.Text := 'SELECT ARTISTES.*, OEUVRES.NOM, OEUVRES.DATE_SORTIE FROM ARTISTES ' +
                         'LEFT JOIN OEUVRES ' +
                         'ON ARTISTES.ID_ARTISTE = OEUVRES.ID_ARTISTE ' +
                         'WHERE ARTISTES.prenom = :PRENOM AND ARTISTES.nom = :NOM';
    MyQuery1.Parameters[0].Value := sPrenomArtiste sNomArtiste;
    MyQuery1.Parameters[1].Value := sNomArtiste sPrenomArtiste;

Discussions similaires

  1. [Débutant] exportation des donnees d'une base donnee access vers un fichier texte
    Par bolbolhari dans le forum VB.NET
    Réponses: 0
    Dernier message: 15/04/2013, 13h50
  2. Réponses: 2
    Dernier message: 02/09/2010, 08h39
  3. Exporter une table de donnees vers un fichier Excel
    Par clairette59 dans le forum ASP.NET
    Réponses: 28
    Dernier message: 13/08/2008, 22h42
  4. Réponses: 3
    Dernier message: 06/01/2007, 17h44
  5. exporter des données vers un fichier text
    Par JauB dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 30/07/2006, 21h36

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