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 :

Exportation Delphi vers Fichier texte


Sujet :

Delphi

  1. #1
    Membre régulier
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2013
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2013
    Messages : 212
    Points : 81
    Points
    81
    Par défaut Exportation Delphi vers Fichier texte
    Bonjour à tous;
    J'ai une table Delphi avec plusieurs champs , Finalement j'ai pu Exporter ses données pour chaque champ à un fichier texte , mon problème qui existe maintenant , concernant le champ date coloré en Bleu,
    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
    Aline:=
                           dbedit1.text+dbcombobox1.Text+inttostr(FieldbyName('N°').value)+StringOfChar(' ', 6 - Length(inttostr(FieldbyName('N°').value)))+
                           FieldbyName('Mat').value+
                          FieldbyName('nom').value+StringOfChar(' ', 25 - Length(FieldbyName('nom').value)) +
                           FieldbyName('PRENOM').value+StringOfChar(' ', 25 - Length(FieldbyName('PRENOM').value))+
                           formatdatetime('ddmmyyyy',FieldbyName('date_naiss').value)+
                           inttostr(FieldbyName('NBR_j_H_1').value)+StringOfChar(' ', 3 - Length( inttostr(FieldbyName('NBR_J_H_1').value)))+
                           FieldbyName('type1trim').value+
                           floattostrf(s, ffFixed, 10, 0)+StringOfChar(' ', 10 - Length( floattostrf(s, ffFixed, 10, 0)))+
                            inttostr(FieldbyName('NBR_j_H_2').value)+StringOfChar(' ', 3 - Length( inttostr(FieldbyName('NBR_J_H_2').value)))+
                           FieldbyName('type2trim').value+
                           floattostrf(s1, ffFixed, 10, 0)+StringOfChar(' ', 10 - Length( floattostrf(s1, ffFixed, 10, 0)))+
                           inttostr(FieldbyName('NBR_j_H_3').value)+StringOfChar(' ', 3 - Length( inttostr(FieldbyName('NBR_J_H_3').value)))+
                           FieldbyName('type3trim').value+
                           floattostrf(s2, ffFixed, 10, 0)+StringOfChar(' ', 10 - Length( floattostrf(s2, ffFixed, 10, 0)))+
                           inttostr(FieldbyName('NBR_j_H_4').value)+StringOfChar(' ', 3 - Length( inttostr(FieldbyName('NBR_J_H_4').value)))+
                           FieldbyName('type4trim').value+
                           floattostrf(s3, ffFixed, 10, 0)+StringOfChar(' ', 10 - Length( floattostrf(s3, ffFixed, 10, 0)))+
                           floattostrf(T, ffFixed, 10, 0)+StringOfChar(' ', 12 - Length( floattostrf(T, ffFixed, 10, 0)))+
                           formatdatetime('ddmmyyyy',FieldbyName('date_rec').value)+
                           formatdatetime('ddmmyyyy',FieldbyName('date_sor').value);
    Comme vous voyez la ligne bleu soulignée, marche bien , mais lorse que , le champ est null il s'affiche un message erreur :
    "Impossible de convertir un null en type Double ,
    Moi je veux mémé s'est il un champ vide ne posera pas probleme et exporté comme un champ vide .regarder l'imageNom : Sans titre.png
Affichages : 409
Taille : 188,1 Ko

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 166
    Points : 41 348
    Points
    41 348
    Billets dans le blog
    63
    Par défaut
    Bonjour,

    Le bon vieux classique export vers un fichier de longueur fixe

    Pour répondre à votre question à propos de l'erreur elle est tout à fait normale vu que vous envoyez null à une fonction (formatdatetime) qui nécessite un argument double (la date)

    Pour répondre de manière plus générale je plains la personne qui aura le malheur de reprendre votre code !
    Décomposez ! Et typez vos FieldByName

    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
    function longueurFixe (a : String; n : integer) : String;
    begin
     result:=a.padright(n); 
     result:=LeftStr(Result, n);
    end;
    begin
    Aline:= dbedit1.text+dbcombobox1.Text+FieldbyName('N°').asString;
    Aline:=ALine+ Longueurfixe(FieldbyName('N°').AsString, 6);
    Aline:=ALine+ FieldbyName('Mat').asString;
    ALine:=Aline+ LongueurFixe(FieldbyName('nom').asString, 25);
    ALine:=Aline+ LongueurFixe(FieldbyName('PRENOM').asString, 25);
    Aline:=Aline+ formatdatetime('ddmmyyyy',FieldbyName('date_naiss').value);
    Aline:=Aline+ LongueurFixe(FieldbyName('NBR_j_H_1').asString,3);
    Aline:=Aline+ FieldbyName('type1trim').value;
    Aline:=Aline+ Format('%10.0f',[ffixed]);  //     ou LongueurFixe(floattostrf(s, ffFixed, 10, 0),10)
    Aline:=Aline + LongueurFixe(FieldbyName('NBR_j_H_2').asString,3);
    Aline:=Aline + FieldbyName('type2trim').asString; 
    Aline:=Aline + LongueurFixe(floattostrf(s1, ffFixed, 10, 0),10);
    Aline:=Aline + LongueurFixe((FieldbyName('NBR_j_H_3').asString, 3);
    Aline:=Aline + FieldbyName('type3trim').asString;
    Aline:=Aline + LongueurFixe(floattostrf(s2, ffFixed, 10, 0),10);
    Aline:=Aline + LongueurFixe(FieldbyName('NBR_j_H_4').asString,3);
    Aline:=Aline + FieldbyName('type4trim').asString;
    Aline:=Aline + LongueurFixe(floattostrf(s3, ffFixed, 10, 0),10)+
    Aline:=Aline + LongueurFixe(floattostrf(T, ffFixed, 10, 0),12);
    if FieldbyName('date_rec').isNull then Aline:=Aline+StringOfChar(' ',8)
                                               else  Aline:=Aline+formatdatetime('ddmmyyyy',FieldbyName('date_rec').AsDateTime);
    if FieldbyName('date_sor').isNull then Aline:=Aline+StringOfChar(' ',8)
                                               else Aline:=Aline+formatdatetime('ddmmyyyy',FieldbyName('date_sor').AsDateTime);
    J'émets quelques doutes :
    - sur les lignes qui n'utilise pas la fonction LongueurFixe;
    - qu'il y ait besoin d'utiliser cette même fonction quand vous faites un floattostrf( , ffFixed, 10, 0) mais j'ai pas envie de vérifier

  3. #3
    Membre régulier
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2013
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2013
    Messages : 212
    Points : 81
    Points
    81
    Par défaut
    Merci grand monsieur , c'est résolu grâce au code qui suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if FieldbyName('date_rec').isNull then Aline:=Aline+StringOfChar(' ',8)
                                               else  Aline:=Aline+formatdatetime('ddmmyyyy',FieldbyName('date_rec').AsDateTime);
    if FieldbyName('date_sor').isNull then Aline:=Aline+StringOfChar(' ',8)
                                               else Aline:=Aline+formatdatetime('ddmmyyyy',FieldbyName('date_sor').AsDateTime);

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 621
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 621
    Points : 25 321
    Points
    25 321
    Par défaut
    Avec un seul Format() avec la Chaîne de format approprié, on peut l'écrire de façon plus lisible

    Voici un bon exemple voir la constante fmtDATA qui permet de bien voir le contenu de la ligne et éviter un tas de concat + LPAD

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

Discussions similaires

  1. Macro Exporter Colonne vers fichier texte
    Par Ineedi2 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 02/09/2016, 19h28
  2. [AC-2003] export table vers fichier texte
    Par vali25 dans le forum VBA Access
    Réponses: 2
    Dernier message: 20/03/2012, 20h05
  3. Réponses: 4
    Dernier message: 16/09/2009, 16h21
  4. Exporter Recordset vers fichier texte
    Par aures64 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 11/11/2006, 02h25
  5. Export vers fichier text
    Par Aurèl90 dans le forum Access
    Réponses: 10
    Dernier message: 26/10/2005, 10h26

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