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 :

[WD23] Tableau HTML avec une Boucle dans un E-mail


Sujet :

WinDev

  1. #1
    Candidat au Club
    Homme Profil pro
    Autre
    Inscrit en
    Octobre 2022
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Octobre 2022
    Messages : 3
    Points : 2
    Points
    2
    Par défaut [WD23] Tableau HTML avec une Boucle dans un E-mail
    Bonjour,

    Je débute sur WinDev et je bute sur un point sur lequel je n'ai pas trouvé la réponse dans l'aide fournie par PC SOFT.

    En fait, je cherche à afficher dans un e-mail toutes les lignes d'une table par le biais d’une boucle (Exemple en bas du message).

    Vous trouverez ci-dessous le 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
    //Variables correspondantes aux balises HTML
    sTRentrée est une chaîne = "<tr>"
    sTDentrée est une chaîne = "<td style='text-align:center;border:1px solid black'>"
    sTDfin est une chaîne = "</td>"
    sTRfin est une chaîne = "</tr>"
    sfinTable est une chaîne = "</table>"
     
    //Variable pour n lignes du tableau 
    nIndiceligne est un entier 
    nIndiceligne = 1
    sLigneBoucle est une chaîne
     
    //En-tête du tableau (1er ligne) 
    sLigne2 est une chaîne 
    sLigne2 = "<Table><tr>"...
    +sTDentrée+"N° de Facture</td>"...
    +sTDentrée+"Date d&acute;&eacute;ch&eacute;ance</td>"...
    +sTDentrée+"Montant de la Facture</td>"...
    +sTDentrée+"Montant d&eacute;j&agrave; R&eacute;gl&eacute;</td>"...
    +sTDentrée+"Solde Restant</td></tr>"
     
    //Boucle
    POUR TOUTE LIGNE DE TABLE_TEMPCreances	
    nIndiceligne++
    sLigneBoucle = (sTRentrée+sTDentrée+TABLE_TEMPCreances.COL_IDRefDoc[nIndiceligne]+sTDfin...
    	+sTDentrée+TABLE_TEMPCreances.COL_DateEcheance_Texte[nIndiceligne]+sTDfin...
    	+sTDentrée+TABLE_TEMPCreances.COL_MontantDev[nIndiceligne]+" €"+sTDfin...
    	+sTDentrée+TABLE_TEMPCreances.COL_MontantRglDev[nIndiceligne]+" €"+sTDfin...
    	+sTDentrée+TABLE_TEMPCreances.COL_SoldeCreance[nIndiceligne]+" €"+sTDfin+sTRfin)
    FIN
     
    //Signature
    sLigneFin est une chaîne ANSI
    sLigneFin = fChargeTexte("\\CheminComplet\signature.html")
    EmailImporteHTML(sLigneFin,"\\CheminComplet")
     
    //Concaténation de toutes les parties
    Email.HTML = sLigne1 + RC + TexteCondition + RC + sLigne2 + sLigneBoucle + sfinTable + sLigneFin
    Invariablement, seul le dernier enregistrement de la Table est affiché.

    J’ai passé beaucoup de temps à chercher mais je ne vois pas l’erreur, c’est pourquoi je lance à appel à l’aide à tous les gentils experts de ce logiciel qui pourront m’assister.

    D'après moi, il doit s'agir d’une erreur entre la conversion du tableau HTML et de WINDEV car lorsque je teste ma boucle avec Trace() cela fonctionne.

    Je vous remercie de votre attention et de votre aide.

    Nom : tab.png
Affichages : 204
Taille : 8,2 Ko

  2. #2
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 182
    Points : 278
    Points
    278
    Par défaut
    bonjour,

    essayez avec : "sLigneBoucle +="
    Cordialement JeAn-PhI

  3. #3
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 205
    Points : 9 195
    Points
    9 195
    Par défaut
    Bonjour,
    Jean-Phi a été plus rapide que moi.

    Une aide précieuse (qui t'aurais permis de trouver tout seul) est d'utiliser le débugueur. Tu mets un point d'arrêt au niveau du code que tu souhaites examiner (dans ce cas, la ligne 25).
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  4. #4
    Candidat au Club
    Homme Profil pro
    Autre
    Inscrit en
    Octobre 2022
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Octobre 2022
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup, ça marche !
    Maintenant, je vais essayer de comprendre la raison.
    En tout cas, merci beaucoup pour votre aide.
    Bonne journée

  5. #5
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 812
    Points : 5 271
    Points
    5 271
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    La syntaxe de POUR TOUT/POUR TOUS est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    POUR TOUTE LIGNE [<Indice> [, <Compteur>]] DE <Champ>
      ...
    FIN
    Dans ton cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    POUR TOUTE LIGNE nIndiceLigne DE TABLE_TEMPCreances
         sLigneBoucle=....
    FIN
    Par ailleurs l'incrémentation est automatique.
    Une autre solution est d'omettre l'indice. C'est alors la ligne en cours qui est prise en compte
    Par ailleurs, il est inutile de préfixer les colonnes par le nom du champ table, on sait que c'est ce champ qui est parcouru. Même si, dans un autre champ table, tu as une colonne qui a le même nom , comme on parcours TABLE_TEMPCréances Windev reconnait les siens.
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  6. #6
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 058
    Points : 9 397
    Points
    9 397
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    sLigneBoucle = (sTRentrée+sTDentrée+TABLE_TEMPCreances.COL_IDRefDoc[nIndiceligne]+sTDfin...
    	+sTDentrée+TABLE_TEMPCreances.COL_DateEcheance_Texte[nIndiceligne]+sTDfin...
    	+sTDentrée+TABLE_TEMPCreances.COL_MontantDev[nIndiceligne]+" €"+sTDfin...
    	+sTDentrée+TABLE_TEMPCreances.COL_MontantRglDev[nIndiceligne]+" €"+sTDfin...
    	+sTDentrée+TABLE_TEMPCreances.COL_SoldeCreance[nIndiceligne]+" €"+sTDfin+sTRfin)
    Ici, on dit que sligneBoucle est égal à tout le truc de droite. Peu importe la valeur de sLigneBoucle juste avant, on écrase cette valeur, et on met ce truc à la place.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    sLigneBoucle = sLigneBoucle + (sTRentrée+sTDentrée+TABLE_TEMPCreances.COL_IDRefDoc[nIndiceligne]+sTDfin...
    	+sTDentrée+TABLE_TEMPCreances.COL_DateEcheance_Texte[nIndiceligne]+sTDfin...
    	+sTDentrée+TABLE_TEMPCreances.COL_MontantDev[nIndiceligne]+" €"+sTDfin...
    	+sTDentrée+TABLE_TEMPCreances.COL_MontantRglDev[nIndiceligne]+" €"+sTDfin...
    	+sTDentrée+TABLE_TEMPCreances.COL_SoldeCreance[nIndiceligne]+" €"+sTDfin+sTRfin)
    Ici, on dit que sLigneBoucle vaut dorénavant son ancienne valeur, concaténée avec ce gros truc. C'est exactement ce qu'on veut. C'est la solution.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    sLigneBoucle += (sTRentrée+sTDentrée+TABLE_TEMPCreances.COL_IDRefDoc[nIndiceligne]+sTDfin...
    	+sTDentrée+TABLE_TEMPCreances.COL_DateEcheance_Texte[nIndiceligne]+sTDfin...
    	+sTDentrée+TABLE_TEMPCreances.COL_MontantDev[nIndiceligne]+" €"+sTDfin...
    	+sTDentrée+TABLE_TEMPCreances.COL_MontantRglDev[nIndiceligne]+" €"+sTDfin...
    	+sTDentrée+TABLE_TEMPCreances.COL_SoldeCreance[nIndiceligne]+" €"+sTDfin+sTRfin)
    C'est une autre façon plus légère d'écrire la commande précédente.

    J'ai même l'impression (sans certitude) que la bonne syntaxe, c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    sLigneBoucle += [sTRentrée+sTDentrée]+(TABLE_TEMPCreances.COL_IDRefDoc[nIndiceligne]+sTDfin...
    	+sTDentrée+TABLE_TEMPCreances.COL_DateEcheance_Texte[nIndiceligne]+sTDfin...
    	+sTDentrée+TABLE_TEMPCreances.COL_MontantDev[nIndiceligne]+" €"+sTDfin...
    	+sTDentrée+TABLE_TEMPCreances.COL_MontantRglDev[nIndiceligne]+" €"+sTDfin...
    	+sTDentrée+TABLE_TEMPCreances.COL_SoldeCreance[nIndiceligne]+" €"+sTDfin+sTRfin)
    Cf l'aide : Le séparateur n'est pas concaténé si la chaîne d'origine est une chaîne vide ("").
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  7. #7
    Candidat au Club
    Homme Profil pro
    Autre
    Inscrit en
    Octobre 2022
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Octobre 2022
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Un grand merci à tous d'avoir donné votre temps pour me fournir toutes ces précisions !
    J'ai bien compris mon erreur grâce à vos explications.
    Bonne journée

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/08/2022, 09h20
  2. Réponses: 1
    Dernier message: 01/01/2017, 15h55
  3. tableau html avec une pagination
    Par SALMHSN dans le forum ASP.NET
    Réponses: 6
    Dernier message: 04/05/2011, 16h16
  4. Réponses: 9
    Dernier message: 30/07/2009, 23h09
  5. [MySQL] Remplir un tableau associatif avec une boucle while
    Par Palsajicoco dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/07/2009, 09h59

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