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 :

Enregistrer les résultats de la requête dans un fichier texte


Sujet :

WinDev

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Pologne

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 12
    Points : 10
    Points
    10
    Par défaut Enregistrer les résultats de la requête dans un fichier texte
    Salut,


    J'ai un probleme avec requiperer les donnees -les resultats de la requete SQL.
    Je veux les enregistrer dans un fichier txt.
    J'ai deja ecris un peu de code dans le Windev :
    Si C'est possible est-ce que quelqu'un peux regarder s´il Vous plaît ?
    Je trouve que j'ai des erreurs dans le boucle "WHILE"
    Je veux bien enregistrer tous les lignes.
    Je serai reconnaissante de l'aide

    NumConnexion est un entier
    NomCompletWdd est une chaîne
    MotDePasseWdd est une chaîne
    VariableDeTest est une chaîne
    Req est un booléen
    NomCheminFichier1 est une chaîne
    IdFichier1 est un entier
    TailleEcrit est un entier = 0
    i est un entier = 0


    NomCheminFichier1 = "agata.txt"
    IdFichier1 = fOuvre(NomCheminFichier1 , foLectureEcriture)

    SI IdFichier1 = -1 ALORS
    Erreur(ErreurInfo(errMessage))
    FIN



    NomCompletWdd = "C:\My Projects\EXPRESS_RepriseDeMedecins\EXPRESS_RepriseDeMedecins.ana\EXPRESS_RepriseDeMedecins.wdd"

    // Mot de passe défini dans l'analyse pour le WDD (si un mot de passe est défini)
    MotDePasseWdd = " "

    // Connexion a la base de données HyperFileSQL
    NumConnexion = SQLConnecte(NomCompletWdd, "", MotDePasseWdd, "Hyper File")
    SI NumConnexion <> 0 ALORS
    // La connexion s'est bien passée
    // Utilisation de la connexion pour exécuter des requetes SQL
    VariableDeTest = "Agata"
    Req = SQLExec("SELECT * FROM EXPRESS_Client1 WHERE NOM ='" + VariableDeTest + "'","REQ1")

    SI Req = Vrai ALORS

    //////////////////////////////////////////////
    // ?????????????...
    ////////////////////////////////////////
    WHILE SQLFetch("REQ1") = 0 // There is at least one more row to read
    i++

    // Écriture des données dans le fichier
    i = fEcrit(IdFichier1 ,EXPRESS_Client1.EXPRESS_Client1ID+TAB+EXPRESS_Client1.NOM+TAB+EXPRESS_Client1.prenom+TAB+EXPRESS_Client1.AgeC, RC)

    FIN
    FIN


    SINON
    // Échec de la requete : affichage d'un message explicatif
    SQLInfoGene("REQ1")
    Erreur("Erreur" + SQL.Erreur + "dans la requete : ", SQL.MesErreur)
    FIN

    // La connexion a échoué : affichage d'un message explicatif
    // Erreur(HErreurInfo())
    SQLDéconnecte()



    Agata

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    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 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Tu ne nous dis pas ce que tu as comme erreur dans ta boucle...

    Je peux déjà te dire que si tu fais utilises SqlExec/SqlFetxh, tu dois lire les colonnes de ta requête avec SqlLitCol (ou son équivalent en anglais).
    De plus je ne vois pas trop à quoi sert la variable i dans la boucle.

    Je pense également que tu devrais faire un petit tour dans le guide d'auto-formation et/ou l'aide en ligne, tu aurais vu que ton parcours de la requête n'est pas bon.

    Tatayo.

  3. #3
    Membre confirmé Avatar de PaulNero
    Homme Profil pro
    DBA Senior Oracle and SQL SERVER
    Inscrit en
    Octobre 2010
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Inde

    Informations professionnelles :
    Activité : DBA Senior Oracle and SQL SERVER
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 416
    Points : 470
    Points
    470
    Par défaut
    Bonjour,
    je ne sais pas si windev accepte le "WHILE" que vous utilisez (à vérifier) car il me semble que c'est beaucoup utilisé dans des langages dérivés du SQL comme T-sql ou Plsql.
    Le danger de prendre du code tout fait est que si l'on a pas les bases on se perd très vite.
    Pour mieux imiter un "ancien" faut déja avoir certaine bases.


    cordialement++
    Cordialement,
    J'ose espérer que m'a contribution vous a été d'une grande aide.
    Pensez tout de Même à dire MERCI et marquer RESOLU en cas de satisfaction.
    Paul

  4. #4
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Pologne

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    Alors, Je change un peu dans la boucle " while " .
    J' ai mis la function SQLLitCol .
    Mais je ne sais pas maintenant.
    Commet Je peux enregistrer(dans un fichier txt) "ligne par ligne" les resultats de la requete ?


    NumConnexion est un entier
    NomCompletWdd est une chaîne
    MotDePasseWdd est une chaîne
    VariableDeTest est une chaîne
    Req est un booléen
    NomCheminFichier1 est une chaîne
    IdFichier1 est un entier
    TailleEcrit est un entier = 0
    i est un entier = 0

    IDClient est un entier
    NomClient, PrenomClient, AgeClient sont des entiers




    NomCheminFichier1 = "agata.txt"
    IdFichier1 = fOuvre(NomCheminFichier1 , foLectureEcriture)
    SI IdFichier1 = -1 ALORS
    Erreur(ErreurInfo(errMessage))
    FIN


    NomCompletWdd ="C:\Mes Projets\MonT_Plik\Mon_Analyse_1.ana\Mon_Client.wdd"
    MotDePasseWdd = " "
    NumConnexion = SQLConnecte(NomCompletWdd, "", MotDePasseWdd, "Hyper File")

    SI NumConnexion <> 0 ALORS

    VariableDeTest = "Agata"
    Req = SQLExec("SELECT * FROM EXPRESS_Client1 WHERE NOM ='" + VariableDeTest + "'","REQ1")

    SI Req = Vrai ALORS

    WHILE SQLAvance("REQ1") = 0
    i++
    IDClient[i] = SQLLitCol("REQ1", 1)
    NomClient[i] = SQLLitCol("REQ1", 2)
    PrenomClient[i] = SQLLitCol("REQ1", 3)
    AgeClient[i] = SQLLitCol("REQ1", 4)



    i = fEcrit(IdFichier1 ,Client.IDClient+TAB+Client.NomClient+TAB+Client.PrenomClient+TAB+Client.AgeClient, RC)
    FIN
    FIN

    SINON

    SQLInfoGene("REQ1")
    Erreur("Erreur" + SQL.Erreur + "dans la requete : ", SQL.MesErreur)
    FIN

    // Erreur(HErreurInfo())
    SQLDéconnecte()

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    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 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Très très honnetement, je pense que tu devrais revoir les bases de la programmation.
    Je fais un bref résumé de ton code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    IDClient est un entier
    NomClient, PrenomClient, AgeClient sont des entiers 
    i est un entier
    Req = SQLExec("SELECT * FROM EXPRESS_Client1 WHERE NOM ='" + VariableDeTest + "'","REQ1")
    WHILE SQLAvance("REQ1") = 0 
    i++
    IDClient[i] = SQLLitCol("REQ1", 1)
    NomClient[i] = SQLLitCol("REQ1", 2)
    PrenomClient[i] = SQLLitCol("REQ1", 3)
    AgeClient[i] = SQLLitCol("REQ1", 4)
    i = fEcrit(IdFichier1 ,Client.IDClient+TAB+Client.NomClient+TAB+Client.PrenomClient+TAB+Client.AgeClient, RC)
    FIN
    Donc le nom, le prénom du client sont tantôt des entiers (dans la déclaration), tantôt des tableaux (NomClient[i]).
    i représente le compteur de la boucle WHILE, mais aussi le résultat de l'écriture dans le fichier... D'ailleurs avec un nom plus explicite, cette erreur serait devenu évidente.
    Tu fais une boucle sur ta requête, mais tu récupères l'ID du client dans le fichier client...

    Un début de piste:
    Les données du client sont des chaines, et doivent être déclarées comme telles.
    La boucle While n'a pas besoin de compteur (en tout cas ici).
    Toutes les données que tu veux écrire viennent de la requête.

    Je te laisse revoir ton code

    Tatayo.

  6. #6
    Membre confirmé Avatar de PaulNero
    Homme Profil pro
    DBA Senior Oracle and SQL SERVER
    Inscrit en
    Octobre 2010
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Inde

    Informations professionnelles :
    Activité : DBA Senior Oracle and SQL SERVER
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 416
    Points : 470
    Points
    470
    Par défaut
    Et je tiens à te rappeller AGATA que pour recupérer facilement des enreigistrements et écrire dans un fichier txt il faut faire:
    HRécupèreEnregistrement(Marequête...etc) et fEcriLigne(MonFichierTexte...etc) et non fEcrit tout court

    cordialement++
    Cordialement,
    J'ose espérer que m'a contribution vous a été d'une grande aide.
    Pensez tout de Même à dire MERCI et marquer RESOLU en cas de satisfaction.
    Paul

  7. #7
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Pologne

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    J'ai essaye de changer WHILE ...
    Mais, j' arrive pas avec enregistrement dans un fichier texte.

    NumConnexion est un entier
    NomCompletWdd est une chaîne
    MotDePasseWdd est une chaîne
    VariableDeTest est une chaîne
    Req est un booléen
    NomCheminFichier1 est une chaîne
    IdFichier1 est un entier
    TailleEcrit est un entier = 0
    i est un entier = 0
    ResEcit est un booléen

    // IDClient est un entier
    // NomClient, PrenomClient, AgeClient sont des entiers




    NomCheminFichier1 = "agata.txt"
    IdFichier1 = fOuvre(NomCheminFichier1 , foLectureEcriture)
    SI IdFichier1 = -1 ALORS
    Erreur(ErreurInfo(errMessage))
    FIN


    NomCompletWdd ="C:\Mes Projets\MonT_Plik\Mon_Analyse_1.ana\Mon_Client.wdd"
    MotDePasseWdd = " "
    NumConnexion = SQLConnecte(NomCompletWdd, "", MotDePasseWdd, "Hyper File")
    SI NumConnexion <> 0 ALORS

    VariableDeTest = "Agata"
    Req = SQLExec("SELECT * FROM EXPRESS_Client1 WHERE NOM ='" + VariableDeTest + "'","REQ1")

    SI Req = Vrai ALORS


    HLitPremier(Client, IDClient)
    TANTQUE HEnDehors = Faux ET ResEcit = Vrai

    //i++
    // IDClient[i] = SQLLitCol("REQ1", 1)
    // NomClient[i] = SQLLitCol("REQ1", 2)
    // PrenomClient[i] = SQLLitCol("REQ1", 3)
    // AgeClient[i] = SQLLitCol("REQ1", 4)

    ResEcit = fEcritLigne(IdFichier1, Client.IDClient+TAB+Client.NomClient+TAB+Client.PrenomClient+TAB+Client.AgeClient)
    HLitSuivant(Client, IDClient)

    FIN
    FIN

    SINON

    SQLInfoGene("REQ1")
    Erreur("Erreur" + SQL.Erreur + "dans la requete : ", SQL.MesErreur)
    FIN

    // Erreur(HErreurInfo())
    SQLDéconnecte()

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    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 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Tu mélanges tout ! Du SqlExec, du hLitSuivant...

    Est-ce que tu as lu l'aide en ligne (entr'autre de SqlExec) ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SqlExec("select idclient from client","req1")
    tantque sqlavance("req1") = 0
    trace(sqllitcol("req1",1))
    sqlferme("req1")
    Tatayo.

  9. #9
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 329
    Points : 3 841
    Points
    3 841
    Par défaut
    Bonjour,

    Tu mélanges les fonctions SQL.. et H.., c'est soit l'un soit l'autre. (Tatayo est le plus rapide ^^)

    Tu utilises SQLExec(..) pour lancer ta requête, pour la lire, la syntaxe est :
    soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    TANTQUE SQLAvance("REQ1") = 0 // Parcours
       SQLLitCol("REQ1", 1) // Récupération de la valeur du premier champ de la requête
    FIN
    SQLFerme("REQ1")
    soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SQLPremier("Req1")
    TANTQUE PAS SQL.EnDehors
      SQLCol("REQ1", 1) // Récupération de la valeur du premier champ de la requête
     
      SQLSuivant("Req1")
    FIN

  10. #10
    Membre confirmé Avatar de PaulNero
    Homme Profil pro
    DBA Senior Oracle and SQL SERVER
    Inscrit en
    Octobre 2010
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Inde

    Informations professionnelles :
    Activité : DBA Senior Oracle and SQL SERVER
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 416
    Points : 470
    Points
    470
    Par défaut
    Essayez ceci et dites moi.

    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
     
    NumConnexion est un entier
    NomCompletWdd est une chaîne
    MotDePasseWdd est une chaîne
    VariableDeTest est une chaîne
    NomCheminFichier1 est une chaîne
    IdFichier1 est un entier
    i est un entier = 0
    ResEcit est un booléen
     
    // IDClient est un entier
    // NomClient, PrenomClient, AgeClient sont des entiers
     
     
     
     
    NomCheminFichier1 = "agata.txt"
    IdFichier1 = fOuvre(NomCheminFichier1 , foLectureEcriture)
    SI IdFichier1 = -1 ALORS
          Erreur(ErreurInfo(errMessage))
    FIN
     
     
    NomCompletWdd ="C:\Mes Projets\MonT_Plik\Mon_Analyse_1.ana\Mon_Client.wdd"
    MotDePasseWdd = " "
    NumConnexion = SQLConnecte(NomCompletWdd, "", MotDePasseWdd, "Hyper File")
     
    SI NumConnexion <> 0 ALORS
     
    VariableDeTest = "Agata"
     SQLExec("SELECT * FROM EXPRESS_Client1 WHERE NOM ='" + VariableDeTest + "'","REQ1")
     
     
    TANTQUE SQlAvance  ET ResEcit = Vrai
     
         //i++
        // IDClient[i] = SQLLitCol("REQ1", 1)
         // NomClient[i] = SQLLitCol("REQ1", 2)
        // PrenomClient[i] = SQLLitCol("REQ1", 3)
          // AgeClient[i] = SQLLitCol("REQ1", 4)
     
    FIN
     
     
    ResEcit = fEcritLigne(IdFichier1, Client.IDClient+TAB+Client.NomClient+TAB+Client.PrenomClient+TAB+Client.AgeClient)
     
    SQLferme("REQ1")
    Cordialement,
    J'ose espérer que m'a contribution vous a été d'une grande aide.
    Pensez tout de Même à dire MERCI et marquer RESOLU en cas de satisfaction.
    Paul

  11. #11
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    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 198
    Points : 12 774
    Points
    12 774
    Par défaut
    PauNero => Ce code ne peut pas fonctionner: tu fais une boucle SqlAvance, dans laquelle tu ne fais rien. Ensuite tu écrits les données de l'enregistrement courant de Client, mais sans recherche, sans lien avec la requête...

    Tatayo.

  12. #12
    Membre confirmé Avatar de PaulNero
    Homme Profil pro
    DBA Senior Oracle and SQL SERVER
    Inscrit en
    Octobre 2010
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Inde

    Informations professionnelles :
    Activité : DBA Senior Oracle and SQL SERVER
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 416
    Points : 470
    Points
    470
    Par défaut
    j'avoue que moi même il me met dans le brouillard son poste.

    J'avais bien envie de lui proposer autre chose mais bon...

    Qu'il essaie de modifier avec l'ensemble des remarques ça pourrait marcher.


    Mais il doit vraiment faire un tour du côté de l'autoformation et même regarder des concepts d'algorithmiques.


    cordialement++
    Cordialement,
    J'ose espérer que m'a contribution vous a été d'une grande aide.
    Pensez tout de Même à dire MERCI et marquer RESOLU en cas de satisfaction.
    Paul

  13. #13
    Membre confirmé Avatar de PaulNero
    Homme Profil pro
    DBA Senior Oracle and SQL SERVER
    Inscrit en
    Octobre 2010
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Inde

    Informations professionnelles :
    Activité : DBA Senior Oracle and SQL SERVER
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 416
    Points : 470
    Points
    470
    Par défaut
    il semble que notre ami a mal adapté cet exemple:
    http://doc.pcsoft.fr/fr-FR/?10000030...tligne-exemple

    en effet, sans les bases un exemple ne vaut rien.


    cordialement++
    Cordialement,
    J'ose espérer que m'a contribution vous a été d'une grande aide.
    Pensez tout de Même à dire MERCI et marquer RESOLU en cas de satisfaction.
    Paul

  14. #14
    Membre émérite
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Points : 2 562
    Points
    2 562
    Par défaut
    Bonjour,

    Je reprends l'exemple de l'aide
    http://doc.pcsoft.fr/fr-FR/?3072007&...lexec-fonction
    avec aussi le code cité par PaulNero pour te dire ce qui ne va pas :


    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
    // Déclaration des variables qui vont servir uniquement dans la partie de code qui nous intéresse
     
    NumConnexion est un entier
    NomCompletWdd est une chaîne
    MotDePasseWdd est une chaîne
    VariableDeTest est une chaîne
    NomCheminFichier1 est une chaîne
    IdFichier1 est un entier
     
     
    NomCheminFichier1 = "agata.txt"
    IdFichier1 = fOuvre(NomCheminFichier1 , foLectureEcriture)
    SI IdFichier1 = -1 ALORS
       Erreur(ErreurInfo(errMessage))
       // Fin du traitement sinon il continue avec ce qu'il y a après
       Retour
    FIN
     
    VariableDeTest = "Agata"
     
    NomCompletWdd ="C:\Mes Projets\MonT_Plik\Mon_Analyse_1.ana\Mon_Client.wdd"
    MotDePasseWdd = " "
    NumConnexion = SQLConnecte(NomCompletWdd, "", MotDePasseWdd, "Hyper File")
     
    SI NumConnexion <> 0 ALORS
       // Comme la connexion est faite, on lance la requête sur la table EXPRESS_Client1 :
       // au lieu de SQLExec("SELECT * FROM EXPRESS_Client1 WHERE NOM ='" + VariableDeTest + "'", "REQ1")
       // on va mettre :
       SQLExec("SELECT EXPRESS_Client1ID,NOM,prenom,AgeC FROM EXPRESS_Client1 WHERE NOM ='" + VariableDeTest + "'", "REQ1")
       // Comme ça on a que les 4 colonnes qui nous intéressent !
     
       // On lit le résultat :
       TANTQUE SQLAvance("REQ1") = 0 // Il y a encore une ligne à lire
          // On lit le résultat de la requête qui se trouve dans "REQ1" avec la fonction SQLLitCol
          fEcritLigne(IdFichier1 ,SQLLitCol("REQ1", 1)+TAB+SQLLitCol("REQ1", 2)+TAB+SQLLitCol("REQ1", 3)+TAB+SQLLitCol("REQ1", 4))
       FIN
       // On a fini donc on ferme la requête
       SQLFerme("REQ1")
    FIN
     
    // on ferme le fichier car on a finit le traitement
    FFerme(IdFichier1)
    Maintenant les exemples de l'aide doivent vraiment être compris pour les placer dans ton code, car tu devras forcément les retravailler pour qu'ils s'adaptent à tes tables et les besoins.

    à bientôt,

    Nicolas

  15. #15
    Membre confirmé Avatar de PaulNero
    Homme Profil pro
    DBA Senior Oracle and SQL SERVER
    Inscrit en
    Octobre 2010
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Inde

    Informations professionnelles :
    Activité : DBA Senior Oracle and SQL SERVER
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 416
    Points : 470
    Points
    470
    Par défaut
    Veuillez essayer ce code (non testé):

    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
    NumConnexion est un entier
    NomCompletWdd est une chaîne
    MotDePasseWdd est une chaîne
    VariableDeTest est une chaîne
    NomCheminFichier1 est une chaîne
    IdFichier1 est un entier
     
    VariableDeTest = "Agata"
     
    NomCompletWdd ="C:\Mes Projets\MonT_Plik\Mon_Analyse_1.ana\Mon_Client.wdd"
    MotDePasseWdd = " "
    NumConnexion = SQLConnecte(NomCompletWdd, "", MotDePasseWdd, "Hyper File")
     
     
    NomCheminFichier1 = "agata.txt"
    IdFichier1 = fOuvre(NomCheminFichier1 , foLectureEcriture)
    SI IdFichier1 = -1 ALORS
       Erreur(ErreurInfo(errMessage))
     
    SINON
     
       SI NumConnexion <> 0 ALORS
          SQLExec("SELECT EXPRESS_Client1ID,NOM,prenom,AgeC FROM EXPRESS_Client1 WHERE NOM ='" + VariableDeTest + "'", "REQ1")
          POUR TOUT REQ1
               fEcritLigne(IdFichier1,hrecupereenregistrement(REQ1))
     
          FIN
     
       SQLFERME("REQ1")
    FIN
    fFERME(IdFichier1)
    Paulnero


    cordialement++
    Cordialement,
    J'ose espérer que m'a contribution vous a été d'une grande aide.
    Pensez tout de Même à dire MERCI et marquer RESOLU en cas de satisfaction.
    Paul

  16. #16
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    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 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Si je ne m'abuse, POUR TOUT ne permet pas de parcourir une requête lancée avec SqlExec. Il faut utiliser soit SqlAvance, soit SqlPremier/SqlSuivant.

    Tatayo.

  17. #17
    Membre confirmé Avatar de PaulNero
    Homme Profil pro
    DBA Senior Oracle and SQL SERVER
    Inscrit en
    Octobre 2010
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Inde

    Informations professionnelles :
    Activité : DBA Senior Oracle and SQL SERVER
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 416
    Points : 470
    Points
    470
    Par défaut
    Si je ne m'abuse, POUR TOUT ne permet pas de parcourir une requête lancée avec SqlExec. Il faut utiliser soit SqlAvance, soit SqlPremier/SqlSuivant.
    Tatayo.

    Bonjour Tatayo,
    Ce serait déja bien que notre ami teste le code avec l'ensemble des méthodes.Si tu dis que l'on ne peut parcourir une requête déclarée avec sqlexec(), bah qu'il remplace par sqlavance.La logique est là et de toute façon s'il testait et ce rendait compte que pour tout générait une erreur il l'aurait changé.

    Avec ta remarque on aurait:

    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
    NumConnexion est un entier
    NomCompletWdd est une chaîne
    MotDePasseWdd est une chaîne
    VariableDeTest est une chaîne
    NomCheminFichier1 est une chaîne
    IdFichier1 est un entier
     
    VariableDeTest = "Agata"
     
    NomCompletWdd ="C:\Mes Projets\MonT_Plik\Mon_Analyse_1.ana\Mon_Client.wdd"
    MotDePasseWdd = " "
    NumConnexion = SQLConnecte(NomCompletWdd, "", MotDePasseWdd, "Hyper File")
     
     
    NomCheminFichier1 = "agata.txt"
    IdFichier1 = fOuvre(NomCheminFichier1 , foLectureEcriture)
    SI IdFichier1 = -1 ALORS
       Erreur(ErreurInfo(errMessage))
     
    SINON
     
       SI NumConnexion <> 0 ALORS
          SQLExec("SELECT EXPRESS_Client1ID,NOM,prenom,AgeC FROM EXPRESS_Client1 WHERE NOM ='" + VariableDeTest + "'", "REQ1")
          TANTQUE SQLAvance("REQ1")=vrai
               fEcritLigne(IdFichier1,hrecupereenregistrement(REQ1))
     
          FIN
     
       SQLFERME("REQ1")
    FIN
    fFERME(IdFichier1)
    si
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    hrecupereenregistrement(REQ1))
    pose problème notre ami doit changer sa déclaration de requête en la mettant comme source de données.


    cordialement
    Cordialement,
    J'ose espérer que m'a contribution vous a été d'une grande aide.
    Pensez tout de Même à dire MERCI et marquer RESOLU en cas de satisfaction.
    Paul

  18. #18
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    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 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Citation Envoyé par PaulNero Voir le message
    Bonjour Tatayo,
    Ce serait déja bien que notre ami teste le code avec l'ensemble des méthodes.Si tu dis que l'on ne peut parcourir une requête déclarée avec sqlexec(), bah qu'il remplace par sqlavance.La logique est là et de toute façon s'il testait et ce rendait compte que pour tout générait une erreur il l'aurait changé.
    Tout à fait, mais je ne pense pas qu'un code qui ne fonctionne pas puisse lui être d'un grand secours. C'est uniquement pour celà que je faisais la remarque.

    Dans le même ordre d'idée, j'aurai pu faire remarquer que hRecupèreEnregistrement récupère l'enregistrement courant, et qu'ici il n'y a pas d'enregistrement courant, puisqu'il n'y a pas de fonction h*...

    Je n'ai pas posté de code complet, mais juste une ébauche justement pour que agatte cherche un peu dans l'aide en ligne, et dans le guide d'auto-formation. Je lui ai donné des pistes sur ce qui ne fonctionne pas et sur ce qu'il faut faire (ou en tout cas une façon de faire).
    Le but de ma démarche est qu'elle trouve tout seule ce qui ne va pas dans son code. Ainsi la prochaine fois elle y arrivera toute seule .

    Tatayo.

  19. #19
    Membre régulier Avatar de NetLandGim
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Mars 2011
    Messages : 97
    Points : 113
    Points
    113
    Par défaut SIMPLE SON PB
    Son problème est simple et cela devrait être résolu depuis

    Elle a déclaré ses variables de connections:

    Elle se connecte à sa base de données
    Pour une analyse décrite sous l'éditeur il serait mieux d'utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HouvreAnalyse(NomCompletWdd ,MotDePasseWdd,AdresseIPServeurHFSQL,NomUtilisateur,Mdp)
    SI les fichiers ne sont pas créés on les crée et dans son cas ces fichiers existent
    Les fichiers sont automatiquement ouverts

    Si tu veux tu utilise les fonctions SQLXXX. Ces fonctions sont utiles pour des connections aux SGBDR non éditées sous WINDEV.

    Tu ouvre ton fichier texte en ajout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ResOuverture = fOuvre("Fichier.txt", foAjout)
    si tu te connecte a ta base avec les HXXX (HouvreConnection par exemple)
    Tu parcours le résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    HlitPremier Client
    TANTQUE HTROUVE
    ligne est une chaine=Client.Nom+TAB+.... Comme tu veux
    fEcritLigne(IdFichier, ligne)
    HlitSuivant
    FIN
    Tu ferme le fichier
    Tu te deconnecte
    Si tu as accès avec les fonction SQLXXX (SQLconnecte)
    Après SQLExe()
    Soit tu parcours le résultat avec SQLPremier/SQLCol
    ou SQLAvance /SQLitCol


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ...
    SQLexec(...)
    SQLPremier (...)
    TANTQUE SQL.Encours et PAS SQL.EnDehors
    ligne est une chaine=SQLCol(NomREq,Rang ou indice)+TAB+.... Comme tu veux
    fEcritLigne(IdFichier, ligne)
    SQLSuivant(...)
    FIN
    Soit tu ouvre le fichier en LectureEcriture
    Tu parcours chaque ligne que tu charge en mémoire
    ligne est une chaine
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ...
    SQLexec(...)
    SQLPremier (...)
    TANTQUE SQL.Encours et PAS SQL.EnDehors
    ligne est une chaine+=SQLCol(NomREq,Rang ou indice)+TAB+.... +RC 
    SQLSuivant(...)
    FIN
    et en dehors de la boucle de lecture de résultat
    Tu écris dans le fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fEcrit(IdFichier, ligne)

Discussions similaires

  1. Réponses: 4
    Dernier message: 16/04/2012, 15h39
  2. Réponses: 7
    Dernier message: 17/10/2011, 13h50
  3. Réponses: 3
    Dernier message: 08/07/2011, 16h00
  4. Enregistrer les données d'une table dans un fichier texte word ou excel
    Par maamar1979 dans le forum Connexion aux bases de données
    Réponses: 2
    Dernier message: 14/06/2006, 13h41
  5. Enregistrer le résultat d'une requête dans un fichier Excel
    Par Isa31 dans le forum Bases de données
    Réponses: 4
    Dernier message: 24/05/2005, 14h31

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