Discussion: Table dans Zone répétée [WD20]

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    juin 2012
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations forums :
    Inscription : juin 2012
    Messages : 166
    Points : 370
    Points
    370

    Par défaut Table dans Zone répétée

    Bonjour,

    Je souhaite faire une zone répétée pour des articles avec un numéro d'article, et pour chacun de ces articles, un ou plusieurs sous-articles dans une table.

    J'ai donc une table dans une zone répétée, et cette table a 2 colonnes de type "combo" alimentées par programmation, mon problème est le suivant :

    Je suis obliger d'alimenter les 2 colonnes a chaque nouvelle répétition de la zone, ce qui est long.
    (20.000 enregistrements dans les colonnes)

    Ce que j'ai essayé :
    - remplir les colonnes par variable (une structure préchargée) mais la table dans la zone répétée ne prend pas en charge ce type d'option (Exception Windev).

    Existe t-il une solution pour éviter ces chargements répétitif ?

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    décembre 2013
    Messages
    1 060
    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 : 1 060
    Points : 2 240
    Points
    2 240

    Par défaut

    Je traiterais le problème différemment. Pour moi, le problème, c'est que la zone répétée contienne 20000 lignes. Soit l'utilisateur a un très très très grand écran, pour voir les 20000 enregistrements.
    Soit il a un écran normal, et il verra simultanément une douzaine d'enregistrements maximum.

    Du coup, j'exécuterais la partie 'initialisation de la combo' uniquement pour les lignes visibles à l'écran. Donc dans le code affichage de la ligne. Avec quand même un attribut masqué, pour dire si tel enregistrement a déjà été initialisé, pour ne pas réinitialiser la combo à chaque scroll.

    Et pour être plus complet, j'essaierai de proposer des outils de type filtre, pour afficher seulement une centaine d'enregistrement au lieu de 20000. Ou faire comme sur le WEB, utiliser des boutons ""Page suivante / Page Précédente / Page n° xxx "" et donc ne mettre dans la zone répétée qu'une toute petite partie de la base.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    juin 2012
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations forums :
    Inscription : juin 2012
    Messages : 166
    Points : 370
    Points
    370

    Par défaut

    Pour moi, le problème, c'est que la zone répétée contienne 20000 lignes.
    Je me suis mal exprimé je pense, ce sont les combos de la table qui contiennent ces lignes.

    Pour résumé, j'ai :
    - Niveau 1 : Ma Zone Répétée
    Données :
    - ID Article Principal
    -- Niveau 2 : Table avec Combos (dans la zone répétée)
    Données :
    - Colonne 1 : Combo liste des Identifiants Articles Consommés
    - Colonne 2 : Combo liste Libellés Articles Consommés

    J'alimente le tout avec une requête et des listes ajoute pour le moment :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SI HExécuteRequête(REQ_ARTICLE,hRequêteDéfaut) ALORS
    	POUR TOUT REQ_ARTICLE
    		ListeAjoute(ZR_TEST[gindice].TABLE_TEST.COL_ID_ART,REQ_ARTICLE.ID_ART)
    		ListeAjoute(ZR_TEST[gindice].TABLE_TEST.COL_LIB_ART,REQ_ARTICLE.Libelle_ART)
    	FIN
    FIN
    Du coup, j'exécuterais la partie 'initialisation de la combo' uniquement pour les lignes visibles à l'écran. Donc dans le code affichage de la ligne. Avec quand même un attribut masqué, pour dire si tel enregistrement a déjà été initialisé, pour ne pas réinitialiser la combo à chaque scroll.
    Le faite de charger une partie de la combo dans la table me parait une bonne solution, a essayer, tout en sachant que j'aimerais garder la saisie assistée lors de la modification de la colonne 1.

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    juin 2012
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations forums :
    Inscription : juin 2012
    Messages : 166
    Points : 370
    Points
    370

    Par défaut

    J'ai trouvé une alternative a mon problème.

    Pour ajouter une ligne dans la table dans la zone répétée, j'ai un bouton "+".

    Dans le code de ce bouton, au lieu d'ajouter une ligne et de rechercher l'article dans la combo de la table, je fais appelle a ce moment la a une fenêtre POPUP.

    Dans cette fenêtre POPUP, j'ai un champ de recherche et une table(ici les 20.000 lignes), le champ permet de faire une recherche rapide parmi le code du produit (c'est dans cette fenêtre qu'il faudrait ajouter votre idée de boutons "Page suivante / Page Précédente / Page n° xxx " !).

    Pour finir, la sélection (double-clique) sur un produit ferme la popup et ajoute le produit dans la nouvelle ligne de la table de la zone répétée.

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

Discussions similaires

  1. [WD20] Champ en saisie dans une rupture table ou zone répétée
    Par Christophe Charron dans le forum WinDev
    Réponses: 1
    Dernier message: 07/06/2016, 13h05
  2. [WB17] Champ table dans Zone répétée
    Par cladoo dans le forum WebDev
    Réponses: 2
    Dernier message: 13/05/2013, 19h10
  3. [WD12] valeur dans zone répétée
    Par manonoc dans le forum WinDev
    Réponses: 1
    Dernier message: 08/12/2008, 15h19
  4. [WD10] Saisie en cascade dans zone répétée.
    Par mogwai162 dans le forum WinDev
    Réponses: 8
    Dernier message: 04/07/2008, 12h49
  5. [w10] Objets dans zone répétée
    Par Wells dans le forum WinDev
    Réponses: 9
    Dernier message: 16/01/2007, 10h51

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