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 2 dimensions


Sujet :

WinDev

  1. #1
    Membre averti
    Homme Profil pro
    Apprenti ingénieur
    Inscrit en
    Juin 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti ingénieur

    Informations forums :
    Inscription : Juin 2013
    Messages : 27
    Par défaut Création Tableau 2 dimensions
    Bonjour
    Je suis débutant sur Windev et je cherche à ranger dans un tableau des valeurs qui sortent d'une requête.
    Voici mon 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
    EXTERNE PG_Requete
    Donnee est chaîne
    Ncomp est un entier=210002
    i est un entier
    tableauF est une tableau de 34 par 8 chaîne
     
    Saisie( "N° Article ",Donnee)
     
    POUR i= 1 A 34
     
    tableauF[i,1]=PG_Requete("SELECT NOCNQTECOM FROM NOMENC  WHERE NOKTCODPF = ¿"+Donnee+"¿ AND NOCTCODECP =¿"+Ncomp+"¿")
    tableauF[i,2]=PG_Requete("SELECT NOCTUNITE FROM NOMENC  WHERE NOKTCODPF = ¿"+Donnee+"¿ AND NOCTCODECP =¿"+Ncomp+"¿")
    tableauF[i,3]=PG_Requete("SELECT NOCNMISENR FROM NOMENC  WHERE NOKTCODPF = ¿"+Donnee+"¿ AND NOCTCODECP =¿"+Ncomp+"¿")
     
    Ncomp++
     
    FIN
     
    TableAffiche(tableauF)
    Les requêtes sont bonnes, mais le tableau ne veux pas s'afficher, on me dit que la syntaxe de TablaAffiche est pas bonne.
    Je voudrais donc savoir comment je peux afficher ce tableau sur un fenêtre ?
    Merci

  2. #2
    Membre éprouvé Avatar de Toytoy31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2010
    Messages : 74
    Par défaut
    Bonjour,

    tu essayes de rafraichir l'affichage d'une table en passant comme paramètre un tableau..

    CF lien vers la fonction tableAffiche : http://doc.pcsoft.fr/?TableAffiche

    étant donné que tu souhaites ajouter des enregistrer dans un tableau, la meilleure manière serait de faire plutôt comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    EXTERNE PG_Requete
    Donnee est chaîne
    Ncomp est un entier=210002
    i est un entier
    tableauF est une tableau de 34 par 8 chaîne
     
    Saisie( "N° Article ",Donnee)
     
    POUR i= 1 _A_ 34
     
    TableauAjouteLigne(tableautableauF,PG_Requete("SELECT NOCNQTECOM FROM NOMENC  WHERE NOKTCODPF = ¿"+Donnee+"¿ AND NOCTCODECP =¿"+Ncomp+"¿"),PG_Requete("SELECT NOCTUNITE FROM NOMENC  WHERE NOKTCODPF = ¿"+Donnee+"¿ AND NOCTCODECP =¿"+Ncomp+"¿"),PG_Requete("SELECT NOCNMISENR FROM NOMENC  WHERE NOKTCODPF = ¿"+Donnee+"¿ AND NOCTCODECP =¿"+Ncomp+"¿"))
     
    FIN
    Sinon, tu peux créer une table (comme dans un tableur) avec 3 colonnes de types chaines, la table ayant pour nom TAB_TEST (par exemple).
    Tu peux la remplir de cette manière pour obtenir un résultat :

    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
    EXTERNE PG_Requete
    Donnee est chaîne
    Ncomp est un entier=210002
    i est un entier
    tableauF est une tableau de 34 par 8 chaîne
     
    Saisie( "N° Article ",Donnee)
     
    POUR i= 1 _A_ 34
    TableAjouteLigne(TAB_TEST,PG_Requete("SELECT NOCNQTECOM FROM NOMENC  WHERE NOKTCODPF = ¿"+Donnee+"¿ AND NOCTCODECP =¿"+Ncomp+"¿"),PG_Requete("SELECT NOCTUNITE FROM NOMENC  WHERE NOKTCODPF = ¿"+Donnee+"¿ AND NOCTCODECP =¿"+Ncomp+"¿"),PG_Requete("SELECT NOCNMISENR FROM NOMENC  WHERE NOKTCODPF = ¿"+Donnee+"¿ AND NOCTCODECP =¿"+Ncomp+"¿"))
    FIN
     
    SI TAB_TEST..occurence <> 0 ALORS
         TableAffiche(TAB_TEST)
    FIN
    J'espère avoir pu répondre à ta question..

    Cordialement

  3. #3
    Membre averti
    Homme Profil pro
    Apprenti ingénieur
    Inscrit en
    Juin 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti ingénieur

    Informations forums :
    Inscription : Juin 2013
    Messages : 27
    Par défaut
    Bonjour
    Tout d'abords merci de ta réponse rapide.
    J'ai encore un soucis, les deux solutions ne marche pas correctement.

    Dans la première ou je garde le Tableau, la requête s'execute, mais le tableau ne s'affiche pas.

    Dans le deuxième cas, avec la Table, je ne sais pas comment la définir au début.
    Il me dise que la variable TAB_TEST n'est pas connu, j'ai donc essayer de la définir en marquant , mais cela ne marche pas.

    Je suis désolé mais je commence juste le Windev et j'ai très peu de connaissance.

    Merci

  4. #4
    Membre éprouvé Avatar de Toytoy31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2010
    Messages : 74
    Par défaut
    Pas de problème

    Tout d'abord, il faut savoir qu'avec Windev une table et un tableau ne sont pas les mêmes choses que dans les autres langages de programmation..

    lorsque je parle de "TAB_TEST", il s'agit d'un élément IHM : un peu à la façon d'un tableur Excel que tu peux voir. il faut donc la créer en faisant un "drag and drop" depuis ton Windev en sélectionnant une Table sur la fenêtre dans laquelle tu as, je suppose, un bouton ou autre pour faire ton traitement.

    un tableau est une forme de tableur sans apparence...

    si tu souhaites afficher les valeurs contenues dans un tableau, tu peux utiliser la fonction Trace() ou Info() comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    //* je déclare mon tableau qui récupérera des variants (cela signifie qu'il n'y a pas de types de données spécifiques attendues dans le tableau : aussi bien des entiers, des chaines etc..)
    MonTableau est un tableau de X par Y Variant //* X = Nbre de ligne et Y = Nbre de colonne
     
    //* ICI tu ajoutes des enregistrements dans ton tableau via la fonction TableauAjouteLigne(MonTableau,Valeur_Col_1,Valeur_Col_2)
    //* ...
     
    //* et ici tu vas les afficher (en faisant comme cela, iNbLigne et iNbreColonne n'ont pas besoin d'être déclarés ;) )
    POUR iNbLigne = 1 _A_ MonTableau..Occurrence
         POUR iNbreColonne = 1 _A_ Y //* le nombre de colonne maximum 
             trace(MonTableau[iNbLigne][iNbreColonne])
         FIN
    FIN

    Comprends tu un peu mieux comme cela ?

  5. #5
    Membre averti
    Homme Profil pro
    Apprenti ingénieur
    Inscrit en
    Juin 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti ingénieur

    Informations forums :
    Inscription : Juin 2013
    Messages : 27
    Par défaut
    Merci pour ces détails, je comprend un peut mieux comment sa marche. Mais ça ne marche toujours pas.

    J'ai donc choisi une table qui existé (GTITABLE4), je n'ai plus de message d'erreur ce qui est bon signe, mais je ne vois toujours pas le résultat, comment dois-je faire ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    POUR i= 1 _A_ 3
    TableAjouteLigne(GTITABLE4,PG_Requete("SELECT NOCNQTECOM FROM NOMENC  WHERE NOKTCODPF = ¿"+Donnee+"¿ AND NOCTCODECP =¿"+Ncomp+"¿"),PG_Requete("SELECT NOCTUNITE FROM NOMENC  WHERE NOKTCODPF = ¿"+Donnee+"¿ AND NOCTCODECP =¿"+Ncomp+"¿"),PG_Requete("SELECT NOCNMISENR FROM NOMENC  WHERE NOKTCODPF = ¿"+Donnee+"¿ AND NOCTCODECP =¿"+Ncomp+"¿"))
    Ncomp++
    FIN
     
    TableAffiche(GTITABLE4)

    Pour ce qui est tu tableau, il me dise que "Impossible d'utiliser une syntaxe de boucle optimisé à cause du compteur : utilisez plutôt comme."
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    POUR i= 1 _A_ 3
    TableauAjouteLigne(tableauF,PG_Requete("SELECT NOCNQTECOM FROM NOMENC  WHERE NOKTCODPF = ¿"+Donnee+"¿ AND NOCTCODECP =¿"+Ncomp+"¿"),PG_Requete("SELECT NOCTUNITE FROM NOMENC  WHERE NOKTCODPF = ¿"+Donnee+"¿ AND NOCTCODECP =¿"+Ncomp+"¿"),PG_Requete("SELECT NOCNMISENR FROM NOMENC  WHERE NOKTCODPF = ¿"+Donnee+"¿ AND NOCTCODECP =¿"+Ncomp+"¿"))
    Ncomp++
    FIN
     
    POUR iNbLigne = 1 _A_ tableauF..Occurrence
         POUR iNbreColonne = 1 _A_ 3
             Trace(tableauF[iNbLigne][iNbreColonne])
         FIN
    FIN
    Merci encore pour les réponses.

  6. #6
    Membre éprouvé Avatar de Toytoy31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2010
    Messages : 74
    Par défaut
    Désolé...

    On va y arriver

    Aurais tu la possibilité de mettre une impression d'écran ? après, soit je suis mauvais (ce qui est possible..) soit nous ne travaillons pas sur la même version de WinDev, car certaines fonctions ne sont disponibles qu'à partir de telle ou telle version..

    Dans laquelle travailles tu ?

  7. #7
    Membre averti
    Homme Profil pro
    Apprenti ingénieur
    Inscrit en
    Juin 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti ingénieur

    Informations forums :
    Inscription : Juin 2013
    Messages : 27
    Par défaut
    Je travail sous Windev à partir d'un module complémentaire de mon ERP (CEGID PMI), c'est la version 12.

    Voici mon écran :
    Nom : IE Windev.JPG
Affichages : 674
Taille : 129,8 Ko

  8. #8
    Membre averti
    Homme Profil pro
    Apprenti ingénieur
    Inscrit en
    Juin 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti ingénieur

    Informations forums :
    Inscription : Juin 2013
    Messages : 27
    Par défaut
    Sa viens de l'affichage parce que j'arrive à l'extraire sur un Excel et la je retrouve bien mes valeurs (enfin presque toutes).
    J'ai utilisé ce code la.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    sFic est une chaîne
    // Demande le nom du fichier
    sFic = fSélecteur("", "", "Choisissez le fichier d'exportation", ...
    "Fichiers Excel (*.xls) *.xls", "xls", fselCrée + fselExiste)
    // Si le nom n'a pas été fourni, abandonne l'export
    // Sinon, exporte le contenu du champ Table TABLE_TABLE1
    SI sFic <> "" ALORS TableVersExcel(GTITABLE4, sFic, taSansTitre)
    Merci pour ton aide

  9. #9
    Membre averti
    Homme Profil pro
    Apprenti ingénieur
    Inscrit en
    Juin 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti ingénieur

    Informations forums :
    Inscription : Juin 2013
    Messages : 27
    Par défaut
    J'ai encore une petite question, lorsque je transfert la table dans un excel, les cellules prennent des propriétés automatiquement. J'ai des colonnes qui se mettent en %, d'autre en €, et certaine reste normales.
    Est-possible de choisir à l'avance la propriété de la colonne ?
    Merci

  10. #10
    Membre éprouvé Avatar de Toytoy31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2010
    Messages : 74
    Par défaut
    Bonjour et désolé de la réponse tardive..

    Qu'entends-tu par :
    Est-possible de choisir à l'avance la propriété de la colonne ?

  11. #11
    Membre averti
    Homme Profil pro
    Apprenti ingénieur
    Inscrit en
    Juin 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti ingénieur

    Informations forums :
    Inscription : Juin 2013
    Messages : 27
    Par défaut
    Je viens de m’apercevoir que d'origine la table à 6 colonnes, 2 en normales, 1 en % et 3 en €.
    Je voudrais donc savoir si il est possible d'ajouter des colonnes à cette table, et savoir si il était possible de changer le format des cellules de chaque colonne ?

    Merci

  12. #12
    Membre averti
    Homme Profil pro
    Apprenti ingénieur
    Inscrit en
    Juin 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti ingénieur

    Informations forums :
    Inscription : Juin 2013
    Messages : 27
    Par défaut
    Après avoir chercher, impossible d'ajouter de nouvelles table.

    Je me rabat donc vers un tableau à deux dimensions.
    Je voudrais savoir si comme pour les table il existe une commande du type TableauVersExcel ?

    J'ai trouvé la commande TableauVersCVS, mais je n'arrive pas à le placer dans un fichier Excel. J'arrive à le sauvegarder en fichier .txt mais cela ne m’intéresse pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    POUR i= 1 _A_ 3
    TableauAjouteLigne(tableauF,PG_Requete("SELECT NOCNQTECOM FROM NOMENC  WHERE NOKTCODPF = ¿"+Donnee+"¿ AND NOCTCODECP =¿"+Ncomp+"¿"),PG_Requete("SELECT NOCTUNITE FROM NOMENC  WHERE NOKTCODPF = ¿"+Donnee+"¿ AND NOCTCODECP =¿"+Ncomp+"¿"),PG_Requete("SELECT NOCNMISENR FROM NOMENC  WHERE NOKTCODPF = ¿"+Donnee+"¿ AND NOCTCODECP =¿"+Ncomp+"¿"))
    Ncomp++
    FIN
     
    Valeurs=TableauVersCSV(tableauF,";")
    fSauveTexte("C:\Documents and Settings\STEPHANE\Bureau\test1.txt",Valeurs)
    Merci pour votre aide

  13. #13
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    989
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 989
    Par défaut
    Bonjour
    Si tu laisses l'extension csv Excel l'ouvrira correctement

  14. #14
    Membre averti
    Homme Profil pro
    Apprenti ingénieur
    Inscrit en
    Juin 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti ingénieur

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

    Citation Envoyé par Yusep Voir le message
    Bonjour
    Si tu laisses l'extension csv Excel l'ouvrira correctement
    Merci beaucoup ça marche parfaitement

  15. #15
    Membre averti
    Homme Profil pro
    Apprenti ingénieur
    Inscrit en
    Juin 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti ingénieur

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

    Voici mon code final :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    POUR i= 1 A 34
    TableauAjouteLigne(tableauF,PG_Requete("SELECT BEKTNUMERO FROM BESOIN  WHERE BECTCODEPF = ¿"+Donnee+"¿  AND BECTCODCOM =¿"+Ncomp+"¿"),PG_Requete("SELECT BEKTLIGNE FROM BESOIN  WHERE BECTCODEPF = ¿"+Donnee+"¿  AND BECTCODCOM =¿"+Ncomp+"¿"),PG_Requete("SELECT BECTCODEPF FROM BESOIN  WHERE BECTCODEPF = ¿"+Donnee+"¿  AND BECTCODCOM =¿"+Ncomp+"¿"),PG_Requete("SELECT BECTCODCOM FROM BESOIN  WHERE BECTCODEPF = ¿"+Donnee+"¿  AND BECTCODCOM =¿"+Ncomp+"¿"),PG_Requete("SELECT BECNCONSPR FROM BESOIN  WHERE BECTCODEPF = ¿"+Donnee+"¿  AND BECTCODCOM =¿"+Ncomp+"¿"),PG_Requete("SELECT BECNCONSRE FROM BESOIN  WHERE BECTCODEPF = ¿"+Donnee+"¿  AND BECTCODCOM =¿"+Ncomp+"¿"))
     
    Ncomp++
    FIN
     
    Valeurs=TableauVersCSV(tableauF,";")
    fSauveTexte("C:\Documents and Settings\STEPHANE\Bureau\test1.csv",Valeurs)
    J'arrive bien à récupérer toutes mes valeurs dans Excel, mais il doit y avoir un problème de retour à la ligne. Je n'ai que 2 colonnes dans mon tableau alors qu'il devrai y en avoir 6, mais je ne sais pas pourquoi ?

    Merci

  16. #16
    Membre éprouvé Avatar de Toytoy31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2010
    Messages : 74
    Par défaut
    Bonsoir et désole de répondre si tard...



    Ta table contient combien de colonnes ? (simple question..)

    parce que si tu n'en vois que deux.. c'est qu'il n'y a que deux colonnes de déclarées et/ou accessibles..

    Dans ce cas, tu peux utiliser la fonction ChampClone() afin d'obtenir le nombre de colonnes dont tu as réellement besoin

    Cordialement

  17. #17
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 430
    Par défaut
    Bonjour,
    Comme je te l'ai déjà indiqué dans une discussion précédente, ton utilisation de TableauAjouteLigne n'est pas correcte.
    Telle que tu l'utilises la première cellule de chaque ligne de ton tableau contient toutes les valeurs renvoyées par la requête, séparées par des TAB.
    Tu confonds TableAjouteLigne et TableauAjouteLigne.
    Ici tu dois séparer chaque valeur avec ExtraitChaine().

    Tatayo.

Discussions similaires

  1. [WD14] Création tableau à deux dimensions
    Par heiti dans le forum WinDev
    Réponses: 10
    Dernier message: 19/03/2014, 10h28
  2. Création tableau 2 dimensions
    Par Chipss dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 12/01/2012, 16h07
  3. [WD14] création/importation Tableau à 2 dimension ?
    Par jaouadi dans le forum WinDev
    Réponses: 7
    Dernier message: 24/10/2009, 20h57
  4. [POO] Création de tableau à 2 dimensions dans un For
    Par Clarkocb dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 17/09/2008, 21h35
  5. Réponses: 3
    Dernier message: 22/02/2008, 09h24

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