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 :

TableOccurrence selon une condition [WD17]


Sujet :

WinDev

  1. #1
    Futur Membre du Club
    Homme Profil pro
    technicien immobilier
    Inscrit en
    Août 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : technicien immobilier
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2014
    Messages : 10
    Points : 5
    Points
    5
    Par défaut TableOccurrence selon une condition
    Bonjour, à toutes et à tous

    Je débute sur Windev, et depuis un moment je bloque sur une incrémentation d'une table fichier selon une condition.

    Voilà je plante le décor: J'ai une table fichier dont je dois incrémenter la 1er "col_Nmes" selon la condition que si la "col_mesure" est vrai.
    mon souci sa incrémenter bien mais sa compte quand même la ligne qui n'ai pas vrai.

    exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ma ligne 1 est vrai donc 1
    ma ligne 2 est fausse donc 0
    ma ligne 3 est vrai elle affiche 3 est non 2 (ce que je voudrais que sa affiche !) à chaque fois qu'une mesure est fausse on ne la compte pas est on incrémente pas rapport à la dernière mesure vrai.
    Voici mon code dans la table réception (Affichage d'une ligne).Qui ne fonctionne pas

    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
    SI  COL_Mesure >0 ALORS
      TableOccurrence(TABLE_Reception) 
      COL_Nmesure=TABLE_Reception
    SINON SI COL_Mesure=Null ALORS
    	     COL_Nmesure=TABLE_Reception[TABLE_Reception,taSuivant]-1
    	     SINON SI COL_Nmesure= Faux ALORS
    	     	   COL_Nmesure=TableOccurrence(TABLE_Reception)=Faux
     
     
     
    FIN
    SI TABLE_Reception.COL_Mesure > 1 ALORS
    	TABLE_Reception.COL_Mesure[TABLE_Reception]..Couleur=RougeClair
    	TABLE_Reception.COL_Mesure[TABLE_Reception]..PoliceGras=Vrai
    SINON
    	TABLE_Reception.COL_Mesure..Couleur=Blanc
    FIN
    Quelqu’un aurait-il la solution ou se n'ai pas possible du fait que c'est une table fichier?

    Merci

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Points : 2 562
    Points
    2 562
    Par défaut
    Bonjour,

    la fonction TableOccurrence sert à donner le nombre de lignes ou de colonnes présentes dans une table et ce quelque soit le contenu.
    Si tu veux avoir un nombre de lignes avec une donnée particulière, alors il faut que tu regardes chaque ligne pour voir si elle contient la donnée ou pas dans la colonne recherchée. Une boucle suffit où tu gardes en mémoire le nombre de lignes déjà passées et bonnes, compteur que tu mettras dans ta colonne col_Nmes (en ajoutant 1 à chaque fois avant).

    Je te laisse regarder et nous poster ton code pour voir si tu es bien parti.

    Bon courage,

    Nicolas

  3. #3
    Futur Membre du Club
    Homme Profil pro
    technicien immobilier
    Inscrit en
    Août 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : technicien immobilier
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2014
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Bonjour Nicolas,

    Merci pour le conseil, mais je crains que de la manière donc j'ai conçu mon application il ne me sera pas possible incrémenter comme je le souhaite.

    En fait j'ai deux tables fichier. Une table "principal" lié à un fichier "principal" que j'alimente avec plusieurs fenêtres. une fois que cette table est rempli, je copie les données via un BTN enregistrement vers la table "réception" lié au fichier "réception" (duplication du fichier "principal"). Je sais pas si jusque là ta suivi ? dans cette copie il n'y à pas de "Nmes" dans le fichier du fait que je ne les enregistres pas dans le fichier "principal" volontairement car ce fichier et réinitialisé après chaque enregistrement dans le fichier "reception" donc l’incrémentation repartirai de zéro à chaque réinitialisation du fichier "principal". Dans le fichier "réception" par contre je dois incrémenter la colonne "Nmes" mais cette colonne est vide dans le fichier "réception" et comme ma colonne Nmes et lié au fichier "réception" et quelle est vide je ne voir pas comment je peu faire pour remplir cette colonne.


    Voici ma table réception.
    Nom : table reception.png
Affichages : 648
Taille : 93,2 Ko

    si vous avez des idées je suis preneur.
    Merci.

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Points : 2 562
    Points
    2 562
    Par défaut
    Dans la table réception, la colonne N° mes est bien vide ? Pour moi, c'est une donnée volatile et liée à l'affichage.

    Si oui, lorsque tu affiches les données dans la table (fournie en image), tu n'alimentes pas la colonne N° Mes (pas liée non plus à une rubrique). Une fois la table chargée, tu parcours toute la table d'affichage et tu alimentes le compteur N° Mes en fonction du contenu de Mes.

    à bientôt,

    Nicolas

  5. #5
    Futur Membre du Club
    Homme Profil pro
    technicien immobilier
    Inscrit en
    Août 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : technicien immobilier
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2014
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Merci pour ta réponse aussi rapide.
    alors j'ai suivi ton conseil. d'Abord j'ai enlever la liaison sur la colonne Nmesure.

    ensuite j'ai mis ce code dans Affichage d'une ligne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    POUR TOUTE LIGNE DE TABLE_Reception
    	SI COL_Mesure <= 0 ALORS
    		COL_Nmesure=Null
    	SINON SI COL_Mesure >= 0 ALORS
    		COL_Nmesure=1
     
     
    		SI COL_Nmesure=1 ALORS
    			COL_Nmesure++
    		SINON
    			COL_Nmesure=Null
    		FIN
    	FIN
    FIN
    et dans la colonne Nmesure j'ai mis

    Col_Nmesure++

    Sa incrémente qu'une fois tous les lignes sont à 2 et les sans mesure son vide
    j'ai du oublier quelque chose au passage je pense.

    Trinkill

  6. #6
    Membre émérite
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Points : 2 562
    Points
    2 562
    Par défaut
    Ce n'est pas dans l'affichage d'une ligne qu'il faut mettre le parcours. Il faut le faire dans le bloc de fin d'initialisation de la table. Ensuite il faut juste faire la première boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    entCompteur est un entier
    entCompteur = 1
     
    POUR TOUTE LIGNE DE TABLE_Reception
       SI COL_Mesure > 0 ALORS
          COL_Nmesure = entCompteur
          entCompteur ++
       FIN
    FIN

  7. #7
    Futur Membre du Club
    Homme Profil pro
    technicien immobilier
    Inscrit en
    Août 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : technicien immobilier
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2014
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup Nicolas c'est exactement ça.
    je suis pas encore trop à l'aise avec les variables

    En tous cas merci beaucoup
    trinkill

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

Discussions similaires

  1. Creation des autres fenetres selon une condition!!
    Par pointer dans le forum Delphi
    Réponses: 3
    Dernier message: 24/06/2006, 15h50
  2. Réponses: 8
    Dernier message: 05/05/2006, 16h33
  3. Affichage selon une condition dans un DBGRID !
    Par obon dans le forum Bases de données
    Réponses: 2
    Dernier message: 14/04/2006, 09h26
  4. Couleur de celulles de DBGRid selon une condition.
    Par abdelghani_k dans le forum Bases de données
    Réponses: 3
    Dernier message: 31/10/2005, 12h17
  5. Réponses: 5
    Dernier message: 23/02/2005, 09h43

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