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 :

Liaison tableau de Emails /table [WD17]


Sujet :

WinDev

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 254
    Points : 184
    Points
    184
    Par défaut Liaison tableau de Emails /table
    Bonjour,
    Je veux remplir une table avec des messages non lus. Voici 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
    MaSession est une EmailSessionPOP3
    MaSession.Nom="MonNom"
    MaSession.AdresseServeur="pop.tralala.fr"
    MaSession.MotDePasse="MonMP"
     
    // Ouverture de la session
    EmailOuvreSession(MaSession)
     
    // Récupération de tous les emails non lus (tabEmailNonLus est un tableau de Emails dans les déclarations globales de MaFenetre)
    tabEmailNonLus = EmailRécupèreTout(MaSession,ertNonLus)
     
    // Affichage des emails dans une table
    TableAffiche(MaTable,taInit)
     
    // Fermeture de la session
    EmailFermeSession("MonNom")
    J'ai créé la table par DataBinding en faisant, depuis l'explorateur de projets, un Drag and Drop de la variable vers MaFenetre.
    Le problème est que rien ne s'affiche dans la table.
    Avez-vous une idée ?
    Par avance merci

  2. #2
    Membre éclairé
    Avatar de Narwe
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2013
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2013
    Messages : 253
    Points : 668
    Points
    668
    Par défaut
    D'après l'aide, la constante ertNonLus n'est pas disponible avec une connexion Pop3.

    Sinon, s'il n'y avait pas eu cette remarque dans l'aide, j'aurais proposé de vérifier les points suivants :
    - Est-ce qu'il y a bien au moins 1 email non lus dans la boite de réception (à force de tests, vous avez peut-être marqué tous les emails comme lu)
    - Est-ce que la variable tabEmailNonLus est vide ou est-ce que c'est le remplissage de la table qui pose problème
    - Avez-vous testé en essayant de récupérer tous les emails et non uniquement ceux non lu ?

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 254
    Points : 184
    Points
    184
    Par défaut
    Merci pour la réponse.
    Je pense que c'est le remplissage de la table qui pose problème.
    Dès que je teste, l'anti virus se met en route, donc je pense que les messages arrivent. J'ai essayé en essayant de charger tous les message, le problème est le même.
    Comment puis-je connaitre le contenu de mon tableau?
    Par avance merci

  4. #4
    Membre éclairé
    Avatar de Narwe
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2013
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2013
    Messages : 253
    Points : 668
    Points
    668
    Par défaut
    Plusieurs solutions.

    Pour moi la plus rapide est d'utiliser le debuggeur :
    - Mettre un point d'arrêt sur la ligne TableAffiche (Ctrl+B ou clique sur la partie gauche de la ligne, un point rouge apparait)
    - En éxecution, le programme va s'arrêter sur ce point d'arrêt et il est possible d'afficher le contenu de la variable tabEmailNonLus dans le debuggeur (Dans le Kouglof (en bas de l'écran), dans la partie avec l'icone "Go", on saisie l'expression que l'on souhaite voir (dans notre cas "tabEmailNonLus") puis le contenu apparait dans Valeur (pour les tableaux, il faut faire un double clique dans cette colonne qui ouvre un écran permettant de voir le contenu), Il est aussi possible de glisser le nom de la variable dans la partie "Go" afin de ne pas avoir à saisir le nom de la variable).
    Voir l'aide : http://doc.pcsoft.fr/fr-FR/?2019001&product=WD (je ne l'ai pas lu mais je suis sur qu'il contient tout ce que je viens d'écrire en beaucoup plus clair).

    L'autre solution serait d'ajouter cette ligne de code après l'appel à EmailRécupèreTout pour connaître le nombre d'email présent dans le tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Info(tableauOccurrence(tabEmailNonLus)) // ou info(tabEmailNonLus..occurrence)
    Pour avoir le détail du tableau (sans utiliser le debuggeur), on rajoute une boucle de ce genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Pour n_IndTab=1 _A_ TableauOccurrence(tabEmailNonLus)
       Trace(tabEmailNonLus[n_IndTab].Sujet // Ou autre membre de la structure email (http://doc.pcsoft.fr/?3032029)
    FIN

  5. #5
    Membre éclairé
    Avatar de Narwe
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2013
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2013
    Messages : 253
    Points : 668
    Points
    668
    Par défaut
    Pour en revenir au problème, le code suivant peut donc être la cause du problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // Affichage des emails dans une table
    TableAffiche(MaTable,taInit)
    Je suppose que la table n'est pas rattaché à la variable tabEmailNonLus (je ne suis pas certains que cela soit possible)
    Cette ligne de code doit donc exécuter le code qui se trouve au niveau de l'initialisation de la table MaTable.
    Quel est ce code ? S'il n'y a pas de code, je pense que c'est logique que rien n'apparaisse (et dans ce cas, il faut en rajouter un, une boucle qui parcours tabEmailNonLus, et pour chaque ligne de ce tableau fait un TableAjouteLigne(MaTable, ...) ).

  6. #6
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 254
    Points : 184
    Points
    184
    Par défaut
    Merci pour l'aide,
    Le tableau contient bien les messages. Le problème est que le nombre de messages sur le serveur est très très volumineux... Le programme met bcp de temps pour les parcourir donc la table ne se remplit pas. J'ai essayé avec un compte possédant peu de messages et dans ce cas tout marche bien.
    La liaison tableau / table est bonne.
    Merci pour l'aide, c'est le contenu du tableau et la trace qui m'ont aidé SUPER, encore merci

  7. #7
    Rédacteur/Modérateur

    Avatar de dsr57
    Homme Profil pro
    Analyste programmeur senior
    Inscrit en
    Octobre 2003
    Messages
    1 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Moselle (Lorraine)

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

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 139
    Points : 4 681
    Points
    4 681
    Billets dans le blog
    22
    Par défaut
    Bonjour

    Pour accélérer le traitement tu peux essayer d'initialiser à faux la propriété AffichageActif de la table.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    MaTable..AffichageActif =faux
    // Récupération de tous les emails non lus (tabEmailNonLus est un tableau de Emails dans les déclarations globales de MaFenetre)
    tabEmailNonLus = EmailRécupèreTout(MaSession,ertNonLus)
     
    // Affichage des emails dans une table
    TableAffiche(MaTable,taInit)
    MaTable..AffichageActif =vrai
    BOn dev
    ------------------------------------------------------------------------------------------------------------------------------------------
    Mon message vous a aidé, pensez à remercier . La discussion est résolue, n'oubliez pas le tag
    ------------------------------------------------------------------------------------------------------------------------------------------
    Site perso : Formation, Expérience, Réalisations, ...
    Blog : Le Blog de DSR57 - Programmation WinDev

  8. #8
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 254
    Points : 184
    Points
    184
    Par défaut
    Merci pour l'info dsr57

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/08/2015, 10h46
  2. créer TRIGGER sur 1 table avec liaison sur 2 autre table
    Par shaka84 dans le forum Développement
    Réponses: 2
    Dernier message: 11/04/2006, 11h10
  3. Un tableau dans une table access, c'est possible ?
    Par mosquitout dans le forum Access
    Réponses: 6
    Dernier message: 05/04/2006, 13h04
  4. Liaison inter-active entre tables
    Par fixouille90 dans le forum Access
    Réponses: 5
    Dernier message: 06/12/2005, 09h23
  5. TDBChart et liaison logicielle avec une table ?
    Par Mailgifson dans le forum C++Builder
    Réponses: 10
    Dernier message: 27/07/2004, 14h11

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