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 :

Accès à un tableau dans une structure logée dans un tableau associatif [WD20E]


Sujet :

WinDev

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 117
    Points : 90
    Points
    90
    Par défaut Accès à un tableau dans une structure logée dans un tableau associatif
    Bonjour,

    J'ai créé un tableau associatif de structure, laquelle comporte un tableau simple.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    StrucMailAppel est une Structure
        n8IDCopaire est entier sur 8
        saAdresseMailCopaire est une chaîne
        saNomCopaire est une chaîne
        saPrénomCopaire est une chaîne
        saObjetMail est une chaîne
        saCorpsMail est une chaîne
        tabPièceJointeCopaire est une tableau de chaînes
    FIN
    gftaTableauMail est un tableau associatif de StrucMailAppel
    J'arrive sans difficultés à alimenter une liste par un simple parcours via un POUR TOUT
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    lstDonnéesMail est StrucMailAppel
    POUR TOUT lstDonnéesMail DE gftaTableauMail
        ListeAjoute(LISTE_Destinataires,Complète(lstDonnéesMail:saNomCopaire,20) + TAB + Complète(lstDonnéesMail:saPrénomCopaire,20) + gLien(lstDonnéesMail:n8IDCopaire))
    FIN
    Par contre, dans cette boucle, impossible d'accéder au tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Trace(TableauOccurrence(lstDonnéesMail:tabPièceJointeCopaire))
    Ce bout de code fait planter avec ce message d'erreur : Erreur à la ligne 4 du traitement Initialisation de LISTE_Destinataires.
    Le membre 'tabPièceJointeCopaire' n'existe pas dans la classe ou la structure 'StrucMailAppel'.

    Lorsque je fais un accès précis à un membre du tableau associatif, je n'ai aucun problème
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    lstDonnéesMail est StrucMailAppel = gftaTableauMail[i]
    .
    .
    .
    SI TableauOccurrence(lstDonnéesMail:tabPièceJointeCopaire) <> 0 ALORS
    Est-une limitation intrinsèque au parcours via un POUR TOUT, ou est-ce moi qui n'ai pas saisi une subtilité ? (Je reconnais que je ne suis pas très à l'aise, ni très doué, avec les structures et les tableaux...)
    Précision : le tableau associatif est récupéré en paramètre à l'ouverture de la fenêtre qui comporte les bouts de code que j'ai mis en exemple.

    D'avance merci des lumières de la communauté

  2. #2
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Bonjour

    Pas de soucis avec le POUR TOUT

    Ci-dessous mon test avec tes variables :
    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
     
    StrucMailAppel est une Structure
    	n8IDCopaire est entier sur 8
    	saAdresseMailCopaire est une chaîne
    	saNomCopaire est une chaîne
    	saPrénomCopaire est une chaîne
    	saObjetMail est une chaîne
    	saCorpsMail est une chaîne
    	tabPièceJointeCopaire est une tableau local de chaînes
    FIN
    gftaTableauMail est un tableau associatif de StrucMailAppel
     
    W_test est un StrucMailAppel
     
    // Alimentation de gftaTableauMail avec 2 éléments
    W_test:n8IDCopaire = 1
    W_test:saNomCopaire = "nom 1"
    W_test:saPrénomCopaire = "prénom 1"
    TableauAjoute(W_test:tabPièceJointeCopaire, "a")
    TableauAjoute(W_test:tabPièceJointeCopaire, "b")
    gftaTableauMail["test1"] = W_test
     
    W_test:n8IDCopaire = 2
    W_test:saNomCopaire = "nom 2"
    W_test:saPrénomCopaire = "prénom 2"
    TableauAjoute(W_test:tabPièceJointeCopaire, "c")
    TableauAjoute(W_test:tabPièceJointeCopaire, "d")
    TableauAjoute(W_test:tabPièceJointeCopaire, "e")
    gftaTableauMail["test2"] = W_test
     
    lstDonnéesMail est StrucMailAppel
    POUR TOUT lstDonnéesMail DE gftaTableauMail
    	Trace(lstDonnéesMail:saNomCopaire + TAB + lstDonnéesMail:saPrénomCopaire)
    	Trace(TableauOccurrence(lstDonnéesMail:tabPièceJointeCopaire))
    FIN

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 117
    Points : 90
    Points
    90
    Par défaut
    Merci Pascal d'avoir pris la peine de tester.

    J'ai lancé un trace au sein de la procédure qui crée le tableau associatif, et de fait, je n'ai pas de problème.

    Je n'ai peut-être pas assez insisté, mais ce tableau est passé en paramètre à une fenêtre, et c'est dans cette fenêtre que ça crashe

    Voici le code d'ouverture de la fenêtre dans lequel ltaTableauMail est le tableau associatif initialement créé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ouvre(FEN_CourrielAppels,ltaTableauMail)
    Et le code d'initialisation de la fenêtre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    PROCEDURE FEN_CourrielAppels( gftaTableauMail est un tableau associatif de StrucMailAppel)
    EXTERNE "WINCONST.WL"
    StrucMailAppel est une Structure
        n8IDCopaire est entier sur 8
        saAdresseMailCopaire est une chaîne
        saNomCopaire est une chaîne
        saPrénomCopaire est une chaîne
        saObjetMail est une chaîne
        saCorpsMail est une chaîne
        tabPièceJointeCopaire est une tableau de chaînes
    FIN
    gfsaObjetAvtModification est une chaîne
    gfsaCorpsAvtModification est une chaîne
    Est-ce que je loupe une subtilité lors du passage du tableau ?

  4. #4
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Ah oui, je n'avais pas fait attention concernant la fenêtre

    Je viens de déporter le code du POUR TOUT dans une fenêtre en déclarant le paramètre de la même façon et ça fonctionne toujours
    Idem en passant le tableau à une procédure
    Je ne vois pas quel est ton problème ...

    Poste éventuellement un projet test ou tu as isolé le problème, on verra comme ça si ça vient de la version Express

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 117
    Points : 90
    Points
    90
    Par défaut
    Pour précision, c'est la version 20 débridée (j'ai cliqué trop vite en créant le post)

    Bon, J'ai auto-résolu le problème (en préparant un projet de test que je comptais poster...)

    La structure qui était passée en paramètre, via le tableau associatif, ne nommait pas ses membres de la même manière que la structure de réception.
    En nommant rigoureusement les membres des deux structures de la même manière, plus de problèmes.

    Ça reste quand même une bizarrerie car seule cette opération de parcours avec le POUR TOUT fait tout planter. Toutes les autres opérations fonctionnent et ne provoquent pas d'effet inattendu.
    Il est vrai qu'idéalement cette structure doit être déclarée dans les variables globales du projet, ce qui m'aurait évité ces déboires. Ça m'apprendra

  6. #6
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Citation Envoyé par xavier.ninane Voir le message
    Il est vrai qu'idéalement cette structure doit être déclarée dans les variables globales du projet, ce qui m'aurait évité ces déboires. Ça m'apprendra
    C'est ce que j'allais dire : il faut déclarer ta structure plus haut (globale projet ou collection de procédure)

  7. #7
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Points : 2 441
    Points
    2 441
    Par défaut
    Citation Envoyé par xavier.ninane Voir le message
    Ça reste quand même une bizarrerie car seule cette opération de parcours avec le POUR TOUT fait tout planter. Toutes les autres opérations fonctionnent et ne provoquent pas d'effet inattendu.

    Bonsoir,

    Peut-être est-ce dû au fait que vos "autres opérations" ne mettaient pas en jeu les membres mal nommés (et donc inconnus).
    Tandis que dans un POUR TOUT, tous les membres de la structure sont concernés.

    A méditer.

    Hemgé

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/11/2011, 20h53
  2. Réponses: 2
    Dernier message: 14/02/2011, 15h56
  3. Réponses: 11
    Dernier message: 15/10/2008, 10h44
  4. Réponses: 4
    Dernier message: 17/01/2008, 23h50
  5. Structure imbriqué dans une structure
    Par beb1982 dans le forum Débuter
    Réponses: 7
    Dernier message: 08/08/2007, 16h27

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