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

WinDev Discussion :

Ecrire dans un fichier txt à partir d'une requête SQL [WD18]


Sujet :

WinDev

  1. #1
    Membre régulier
    Homme Profil pro
    Expert Technique Java
    Inscrit en
    Septembre 2012
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Expert Technique Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 117
    Points : 75
    Points
    75
    Par défaut Ecrire dans un fichier txt à partir d'une requête SQL
    Bonjour à tous,

    Je souhaiterais écrire dans un fichier texte toutes les lignes que ma requête me retourne après exécution mais malheureusement impossible de comprendre mon erreur.

    Voici mon bout de 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
    res est un entier = fOuvre("C:\test\Liste_Client\listeClient.txt",foLectureEcriture)
    SI res = -1 ALORS 
    	Erreur("Impossible d'ouvrir le fichier")
    FIN
     
    // Erreur lors de l'exécution de la requête ?
    SI HExécuteRequête(requeteInfo, hRequêteDéfaut) = Vrai ALORS
    	// Lecture du premier enregistrement du résultat de la requête
    	HLitPremier(requeteInfo)
    	TANTQUE PAS HEnDehors
    		nIDFichier est un entier
    		sChaîneEcriture est une chaîne
    		// Ouverture du fichier
    		nIDFichier = fOuvre("C:\test\Liste_Client \listeClient.txt", foEcriture)
    		SI nIDFichier <> -1 ALORS
    			// Ecriture du fichier
    			// sChaîneEcriture contient la chaîne à écrire
    			fEcritLigne(nIDFichier, &sChaîneEcriture, Taille(sChaîneEcriture))
    			// Fermeture du fichier
    			fFerme(nIDFichier)
    		SINON
    			Erreur("Impossible d'écrire dans le fichier")
    		FIN	
    		HLitSuivant(requeteInfo) // Lecture de l'enregistrement suivant
    	FIN
    SINON
    	// Affichage du message d'erreur
    	Erreur("La requête n'a pas exécuté correctement")
    FIN
    Ma requête SQL fonctionne bien.
    Mais quand je regarde mon fichier que je crée plutôt qui est vide à la base, il se met 2 ou trois bout de ligne de ma requête en vrac et c'est tout.
    Alors que j'ai facile 3000ligne.

    Si vous avez des suggestions à me proposer je suis à votre écoute !

    Bien cordialement,
    Blooster.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 240
    Points : 12 872
    Points
    12 872
    Par défaut
    Bonjour,
    fOuvre ne doit pas être lancé à chaque itération de la boucle, mais une seule fois.
    sChaîneEcriture n'est jamais affectée, et tu écris dans la fichier l'adresse de la variable, au lieu de son contenu.

    Tatayo.

  3. #3
    Membre régulier
    Homme Profil pro
    Expert Technique Java
    Inscrit en
    Septembre 2012
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Expert Technique Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 117
    Points : 75
    Points
    75
    Par défaut
    J'ai rebidouillé mon code après tes conseils.
    C'est bien ça ?

    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
    res est un entier = fOuvre("C:\test\Liste_Client \listeClient.txt",foLectureEcriture)
    SI res = -1 ALORS 
    	Erreur("Impossible d'ouvrir le fichier")
    FIN
     
    // Erreur lors de l'exécution de la requête ?
    SI HExécuteRequête(requeteInfoListeClient, hRequêteDéfaut) = Vrai ALORS
    	// Lecture du premier enregistrement du résultat de la requête
    	HLitPremier(requeteInfoListeClient)
    	TANTQUE PAS HEnDehors
    		SI res <> -1 ALORS
    			// Ecriture du fichier
    			// sChaîneEcriture contient la chaîne à écrire
    			fEcritLigne(res, requeteInfoListeClient.T_LIBELLE + " " + requeteInfoListeClient.T_PRENOM + " ")
    			// Fermeture du fichier
    			fFerme(res)
    		SINON
    			Erreur("Impossible d'écrire dans le fichier")
    		FIN	
    		HLitSuivant(requeteInfoListeClient) // Lecture de l'enregistrement suivant
    	FIN
    SINON
    	// Affichage du message d'erreur
    	Erreur("La requête n'a pas éxecuté correctement")
    FIN
    Cordialement,
    Blooster

  4. #4
    Membre actif
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Septembre 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 176
    Points : 297
    Points
    297
    Par défaut
    Bonjour,

    Presque, vu que tu ouvre ton fichier avant ta boucle, il faut le fermer après, pas pendant.

    Bonne continuation.

  5. #5
    Membre régulier
    Homme Profil pro
    Expert Technique Java
    Inscrit en
    Septembre 2012
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Expert Technique Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 117
    Points : 75
    Points
    75
    Par défaut
    Ah super je te remercie !

    J'avais pris le système d'assistance windev, c'est lui qui m'a sortie un truc comme ça et qui d'ailleurs je n'ai pas su l’interpréter.

    Merci bien en tout cas !

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 03/03/2015, 11h57
  2. [AC-2010] Creer un fichier excel à partir d'une requête sql
    Par NassCorp dans le forum VBA Access
    Réponses: 2
    Dernier message: 20/08/2013, 17h02
  3. Réponses: 3
    Dernier message: 23/09/2009, 21h19
  4. Réponses: 10
    Dernier message: 23/10/2007, 15h15
  5. Réponses: 8
    Dernier message: 07/09/2006, 11h43

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