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 :

Création tableau à deux dimensions


Sujet :

WinDev

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 66
    Points : 41
    Points
    41
    Par défaut Création tableau à deux dimensions
    Bonjour! j'utilise windev 14 et dans un état, j'essaye de créer un tableau à deux dimensions et de le parcourir pour y ajouter des données, malheureusement je n'y arrive pas!!!!

    je dois avoir un tableau à 9 colonnes. voici le code que j'ai fais:

    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
    tabEncour est un tableau de 2  par 9 Variants
    i est un entier=0
    j est un entier=0
    nNbmax est un entier=TableOccurrence(FEN_TousLesEncours.TABLE_Table1)
    //POUR i =1 _A_ 9
    //	tabEncour[i,1]=0
    //FIN
     
    POUR i=1 _A_ 9
    	POUR j=1 _A_ 9
    	tabEncour[i,j]=FEN_TousLesEncours.TABLE_Table1.COL_date
    	tabEncour[i,j]=FEN_TousLesEncours.TABLE_Table1.COL_col
    	tabEncour[i,j]=FEN_TousLesEncours.TABLE_Table1.COL_tps
    	tabEncour[i,j]=FEN_TousLesEncours.TABLE_Table1.COL_val_tps
    	tabEncour[i,j]=FEN_TousLesEncours.TABLE_Table1.COL_periode
    	tabEncour[i,j]=FEN_TousLesEncours.TABLE_Table1.COL_mt_HT
    	tabEncour[i,j]=FEN_TousLesEncours.TABLE_Table1.COL_id_fact
    	tabEncour[i,j]=FEN_TousLesEncours.TABLE_Table1.COL_encours
    	tabEncour[i,j]=FEN_TousLesEncours.TABLE_Table1.COL_avance
    	FIN
    FIN
    Info("tableau",tabEncour[1,1],tabEncour[1,2],tabEncour[1,3],tabEncour[1,4],tabEncour[1,5],tabEncour[1,6],tabEncour[1,7],tabEncour[1,8],tabEncour[1,9])
    avec ce code j'ai un message d'erreur:
    Erreur à la ligne 34 du traitement Lecture des données de ETAT_TousLesEncours.
    La dimension 1 du tableau possède 2 élément(s) et vous tentez d'accéder à l'élément 3.
    J'avoues je comprends pas trop les tableaux(création,parcour,...)j'ai un peu de mal avec ça....

    Merci de vos réponses.

  2. #2
    Membre expérimenté Avatar de klbsjpolp
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 065
    Points : 1 322
    Points
    1 322
    Par défaut
    Citation Envoyé par heiti Voir le message
    tabEncour est un tableau de 2 par 9 Variants
    Bonjours, si tu veux un tableau de 9 par 9, je te suggère de le déclarer comme tel. Sinon, tu peux toujours utiliser un tableau dynamique si tu n'est pas sûr des dimensions à utilisées.
    «Un problème bien défini est un problème à moitié résolu.»

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 66
    Points : 41
    Points
    41
    Par défaut illustration tableau
    je devrais avoir un tableau comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    --------------------------------------------------------------
    !date    !Col!Tps!ValTps !N°fact  !periode   !Mt HT   !Encours!Avance!
    --------------------------------------------------------------
    !05/06/09!AA !25 !275000!.........!..........!........!275000!..........!
    !05/06/09!AA !25 !275000!.........!..........!........!275000!..........!
    !05/06/09!AA !25 !275000!.........!..........!........!275000!..........!
    !05/06/09!AA !25 !275000!.........!..........!........!275000!..........!
    !05/06/09!AA !25 !275000!.........!..........!........!275000!..........!
    !05/06/09!AA !25 !275000!.........!..........!........!275000!..........!
    !05/06/09!AA !25 !275000!.........!..........!........!275000!..........!
    !05/06/09!AA !25 !275000!.........!..........!........!275000!..........!
    donc je pense pas que ce soit un tableau 9 par 9 qu'il me faut!
    et si je prends un tableau dynamique est-ce que je pourrais le manipuler comme je veux après?

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    19 647
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 19 647
    Points : 32 889
    Points
    32 889
    Par défaut
    tu veux un tableau ou une table ?

  5. #5
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 66
    Points : 41
    Points
    41
    Par défaut
    Je veux un tableau.
    A la base j'ai créé un état sur champ table. J'ai récupéré les données sans problème sauf pour les 2 dernières colonnes qui doivent se calculer.(cumul)
    j'ai voulu parcourir le tableau et je me suis aperçu que je ne pouvais pas le faire,car c'était des rubriques que j'avais et non un tableau entier.!!!
    Je me suis donc dis que si je passais par un tableau pour récupérer toutes mes données et parcourir ce tableau pour mes calculs je pourrais ensuite les ajouter à mes rubriques...
    C'est peut être pas aussi une bonne idée de procéder comme ça? je ne sais pas!

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    19 647
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 19 647
    Points : 32 889
    Points
    32 889
    Par défaut
    Je n'en vois pas la nécessité ? Ou alors je n'ai pas compris ce que tu souhaites.

    Tu peux parfaitement effectuer tes calculs sur une table.
    Tu as d'ailleurs plusieurs possibilités de calculs automatiques.
    Tu peux aussi faire des calculs dans un État

  7. #7
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 66
    Points : 41
    Points
    41
    Par défaut
    Voici mon code de base dans le code de l'état :
    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
    sDateencour est une chaîne=FEN_TousLesEncours.TABLE_Table1.COL_date
    dChaindate est une Date=ChaîneVersDate(sDateencour)
    RUB_COL_date1=dChaindate
    RUB_COL_col1=FEN_TousLesEncours.TABLE_Table1.COL_col
    RUB_COL_tps1=FEN_TousLesEncours.TABLE_Table1.COL_tps
    RUB_COL_val_tps1=FEN_TousLesEncours.TABLE_Table1.COL_val_tps
    RUB_COL_periode1=FEN_TousLesEncours.TABLE_Table1.COL_periode
    RUB_COL_mt_HT1=FEN_TousLesEncours.TABLE_Table1.COL_mt_HT
    RUB_COL_id_fact1=FEN_TousLesEncours.TABLE_Table1.COL_id_fact
     
    ///condition pour les 2 dernières colonnes
    //cumul 
    nValeur est un entier
    nValeur=0
    SI RUB_COL_tps1<>0 ALORS
    	nValeur=(-RUB_COL_tps1)+nValeur
    SINON
    	nValeur=nValeur+RUB_COL_mt_HT1
    FIN
     
    SI nValeur>0 ALORS	
    	RUB_COL_Avance1=Abs(nValeur)
    	RUB_COL_Avance1=Abs(nValeur)
    	RUB_COL_En_cours1=0
    	RUB_COL_En_cours1=0
    SINON
    	RUB_COL_En_cours1=Abs(nValeur)
    	RUB_COL_En_cours1=Abs(nValeur)
    	RUB_COL_Avance1=0
    	RUB_COL_Avance1=0
    FIN
    juste avec ça j'obtiens pour les 1ères colonnes les bonnes données, sauf pour les 2 dernières ou le cumul ne se fait pas malgré mon code parce qu'il n'y a pas de parcours sur les rubriques.(et je ne pense pas qu'on puisse le faire) C'est pour cela que j'ai voulu créer un tableau pour le parcourir et ajouter ensuite les données à mes rubriques.

  8. #8
    Membre expérimenté Avatar de klbsjpolp
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 065
    Points : 1 322
    Points
    1 322
    Par défaut
    Ta méthode n'est pas la plus optimale, mais elle devrait marcher. Comme je t'ai dit, ton erreur viens de ta ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tabEncour est un tableau de 2 par 9 Variants
    Qui devrait déclarer un tableau de 9X9 et non de 2X9.
    «Un problème bien défini est un problème à moitié résolu.»

  9. #9
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 803
    Points
    3 803
    Par défaut
    Tu peux aussi déclarer un tableau à deux dimension de n ligne par 9 colonnes

    et dans ce cas tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tabEncour est un tableau de * par 9 Variants
    Dans ton cas je pense que ta déclaration sera

    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
    tabEncour est un tableau de 2  par 9 Variants
    i est un entier=0
    j est un entier=0
    nNbmax est un entier=TableOccurrence(FEN_TousLesEncours.TABLE_Table1)
    // on redimensionne le tableau pour avoir le nombre de ligne voulu
    Dimension(tabEncour,nNbmax,9)
     
    POUR i=1 _A_ nNbmax  
    	POUR j=1 _A_ 9
    		tabEncour[i,j]=FEN_TousLesEncours.TABLE_Table1[i].COL_date
    		tabEncour[i,j]=FEN_TousLesEncours.TABLE_Table1[i].COL_col
    		tabEncour[i,j]=FEN_TousLesEncours.TABLE_Table1[i].COL_tps
    		tabEncour[i,j]=FEN_TousLesEncours.TABLE_Table1[i].COL_val_tps
    		tabEncour[i,j]=FEN_TousLesEncours.TABLE_Table1[i].COL_periode
    		tabEncour[i,j]=FEN_TousLesEncours.TABLE_Table1[i].COL_mt_HT
    		tabEncour[i,j]=FEN_TousLesEncours.TABLE_Table1[i].COL_id_fact
    		tabEncour[i,j]=FEN_TousLesEncours.TABLE_Table1[i].COL_encours
    		tabEncour[i,j]=FEN_TousLesEncours.TABLE_Table1[i].COL_avance
    	FIN
    	Info("tableau",tabEncour[i,1],tabEncour[i,2],tabEncour[i,3],tabEncour[i,4],tabEncour[i,5],tabEncour[i,6],tabEncour[i,7],tabEncour[i,8],tabEncour[i,9])
    FIN
    la touche est ton amie. l'aide ne mord pas quand on la consulte...
    PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider. (Un exemple vaut mieux que de longs discours...)

    Pensez à utiliser les votes et à cliquer sur , merci

  10. #10
    Membre à l'essai
    Homme Profil pro
    Apprenti ingénieur
    Inscrit en
    Juin 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti ingénieur

    Informations forums :
    Inscription : Juin 2013
    Messages : 27
    Points : 13
    Points
    13
    Par défaut
    Bonjour

    J'ai besoin d'afficher dans un tableau des valeurs qui viennent de plusieurs requêtes, mais je n'arrive pas a afficher ce tableau, sa doit être super simple mais je ne connais pas du tout Windev.



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    EXTERNE PG_Requete
    Donnee est chaîne
    tableauF est une tableau de 34 par 3 chaîne
    Ncomp est un entier=210001
     
    Saisie( "N° Article ",Donnee)
     
    POUR Ncomp=210001 _A_ 210034
    tableauF[i,1]=PG_Requete("SELECT ARKTCODART FROM ARTICLE , NOMENC WHERE NOCTCODECP =¿"+Ncomp+"¿ AND ARKTCODART = ¿"+Donnee+"¿")
    tableauF[i,2]=PG_Requete("SELECT NOCTUNITE FROM ARTICLE , NOMENC WHERE NOCTCODECP =¿"+Ncomp+"¿ AND ARKTCODART = ¿"+Donnee+"¿")
    tableauF[i,3]=PG_Requete("SELECT NOCNMISENR FROM ARTICLE , NOMENC WHERE NOCTCODECP =¿"+Ncomp+"¿ AND ARKTCODART = ¿"+Donnee+"¿")
     
    FIN
    Je n'arrive pas à afficher le tableau dans une fenêtre, j'ai essayer TableauAffiche mais sa ne marche pas.

    Merci pour votre aide

  11. #11
    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
    Bonjour

    Pour afficher vos données, vous devez alimenter une Table qui est un champ de l'IHM, plutôt qu'un tableau est un type de variable.

    Hemgé

Discussions similaires

  1. [Tableaux] tri de tableau deux dimensions
    Par oursquetaire dans le forum Langage
    Réponses: 8
    Dernier message: 27/12/2005, 14h27
  2. Affichage d'un tableau à deux dimensions.
    Par Allan dans le forum C
    Réponses: 3
    Dernier message: 11/12/2005, 18h29
  3. Réponses: 1
    Dernier message: 18/11/2005, 11h38
  4. tri alphabétique dans un tableau deux dimensions
    Par *!!cocco!!* dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 06/12/2004, 21h38
  5. Passage d'un tableau à deux dimensions
    Par karl3i dans le forum C
    Réponses: 3
    Dernier message: 20/10/2003, 14h50

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