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 :

Condition pour cocher des champs bien précis d'un groupe par programmation


Sujet :

WinDev

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Windev
    Inscrit en
    Novembre 2018
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Windev

    Informations forums :
    Inscription : Novembre 2018
    Messages : 68
    Points : 0
    Points
    0
    Par défaut Condition pour cocher des champs bien précis d'un groupe par programmation
    Bonjour le forum.
    J'ai créé un groupe de 10 champs de saisie nommés : a,b,c,.....,j
    et 2 champs nommés A et B n'appartiennent pas au groupe.
    Je cherche un code pour remplir les champs du groupe par des croix(x) sous conditions dépendentes des valeurs des champs A et B.
    Exemple:
    Si champ_A = 2 et Champ_B = 5 alors
    Les 2 premiers champs_a = × et champ_b = ×
    Et les 5 derniers f,g,h,i,j tous = × pour que les 3 champs du milieu c,d,e restent vides.
    Y'a t- il un code plus simple sans passer par le long code des conditions traditionnelles.
    Merci

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Il n'y a pas besoin d'un "code long et compliqué".
    Tu parcours les champs avec un EnumereChamp(), en prenant soit de ne lister que les champs de ce groupe (je te laisse regarder dans l'aide en ligne comment faire).
    Dans la boucle, tu incrémentes un compteur, et si sa valeur est inférieure ou égale à Champ_A, ou supérieure ou égale à Champ_B, tu affectes x au champ "courant" (celui de la boucle), si besoin avec une indirection.
    Vu de loin dans le brouillard, 5 lignes de code.

    Tatayo.

  3. #3
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 056
    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 : 4 056
    Points : 9 394
    Points
    9 394
    Par défaut
    Il faut quand même s'assurer que la fonction enumèreChamp() renvoie les 10 champs toujours dans le même ordre, et toujours dans l'ordre qui nous arrange bien. Peut-être que ça marche aujourd'hui, mais que ça va planter demain, parce que tu vas modifier tel ou tel champ et la fonction enumèreChamp ne va plus renvoyer les champ dans le même ordre ?

    Si les 10 champs à manipuler ont des noms 'normalisés' (tous construits selon une certaine logique), alors j'utiliserais les indirections (voir ce mot clé dans l'aide). Je pense qu'ainsi, on a l'assurance que le traitement fait ce qu'on veut.

    Ca reste 5 ou 6 lignes de code.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Windev
    Inscrit en
    Novembre 2018
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Windev

    Informations forums :
    Inscription : Novembre 2018
    Messages : 68
    Points : 0
    Points
    0
    Par défaut
    Est ce que je peux avoir de l'aide pour ce code?
    J'ai testé la fonction Enumèrechamp() et l'indirection {NomChamps,indChamp} ="x", je n'ai que le nbre de champs non vides du groupe et tous les champs sont cochés (×).
    Comment incrémenter un compteur pour mon groupe de champs?

  5. #5
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 056
    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 : 4 056
    Points : 9 394
    Points
    9 394
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    limite1, limite2, i est un entier 
    limite1 = 2
    limite2 = 5
    pour i = 1 a 10
       nom_champ = "champs_" + milieu( "abcdefghij",i,1)
       si i <= limite1 _ou_ i >= 10-limite2  alors 
          {nom_champ, indchamp} = "x"
       sinon
          {nom_champ, indchamp} = " "
       fin
    fin
    Pas testé du tout, mais ça devrait fonctionner.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Windev
    Inscrit en
    Novembre 2018
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Windev

    Informations forums :
    Inscription : Novembre 2018
    Messages : 68
    Points : 0
    Points
    0
    Par défaut
    Ça marche parfaitement, merci bcp

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Windev
    Inscrit en
    Novembre 2018
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Windev

    Informations forums :
    Inscription : Novembre 2018
    Messages : 68
    Points : 0
    Points
    0
    Par défaut
    Je reviens vers vous une autre fois, et je reste tjrs dans le même sujet du groupe des 10 champs de saisie cité en haut. La question est la suivante:
    Je cherche un code pour récupérer la valeur du premier champ non vide du groupe.
    Exemple:
    sai_champ_a = 0 ,
    sai_champ_b = 0 ,
    sai_champ_c = 12 ,
    sai_champ_d = 20,
    sai_champ_e = 43 ,
    sai_champ_f = 0 ,
    sai_champ_g = 0 , .....
    Je veux récupéré dans un champ a l'extérieur du groupe la valeur du premier champ non nulle, c'est à dire la valeur du
    sai_champ_c qui est 12
    Merci pour votre aide

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Avec le code de tbc92, tu sais boucler sur tes champs, et leur affecter une valeur.
    L'adapter pour lire la valeur des champs ne présente vraiment aucune difficulté.

    Tatayo

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Windev
    Inscrit en
    Novembre 2018
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Windev

    Informations forums :
    Inscription : Novembre 2018
    Messages : 68
    Points : 0
    Points
    0
    Par défaut
    J'arrive pas à avoir la valeur du premier champ non nul.
    J'ai adapté le code de tbc92 mais j'obtiens la valeur du dernier champ non nul du groupe .
    Le code est le suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    pour i = 1 a 10 
       NomChamp= EnumèreChamp(Gr_groupe1, i ,1) 
       SI {NomChamp, indchamp} <> 0 ALORS
           SAI_résultat =   {NomChamp, indchamp}
        SINON SAI_résultat = 0
    FIN
    Qu'est ce que je dois rajouter pour avoir la valeur du premier champs non nul du groupe.

  10. #10
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Petite correction:
    Citation Envoyé par Bzik59 Voir le message
    J'ai adapté le code de tbc92 mais j'obtiens la valeur du dernier champ non nul du groupe s'il est non nul, sinon 0.
    Si tu relis bien con code, tu devrais trouver rapidement le pourquoi du comment.
    Sinon je tu suggère de poser un point d'arrêt, et d'avancer pas à pas en surveillant ce qu'il se passe. Le problème devrait te sauter aux yeux, ainsi que la solution.

    Tatayo.

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Windev
    Inscrit en
    Novembre 2018
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Windev

    Informations forums :
    Inscription : Novembre 2018
    Messages : 68
    Points : 0
    Points
    0
    Par défaut
    Bonjour Tatayo. Bien sûr je vais pas poser cette question si je suis expert comme vous. Je suis débutant en WinDev. Si vous m'aidez à résoudre mon problème, ça sera une leçon supplémentaire pour moi. Alors merci de me dire ce que je peux faire si vous voulez.
    Ce que j'ai fait c'est ça:

    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 i = 1 A 10 
         NomChamp= EnumèreChamp(Gr_groupe1, i ,1) 
         SI {NomChamp, indchamp} = 0 ET i < 5 ALORS 
              NbreChamps = NbreChamps +1
         FIN
    FIN
    SAI_résultat = NbreChamps
     
    POUR j = 1 A NbreChamps + 1
         NomChamp= EnumèreChamp(Gr_groupe1, i ,1) 
         SI {NomChamp, indchamp} <> 0 ALORS 
              SAI_résultat2 = {NomChamp, indchamp} 
         FIN
    FIN
    Je m'en sors comme ça mais je sens que ce n'est tout à fait juste

  12. #12
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 056
    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 : 4 056
    Points : 9 394
    Points
    9 394
    Par défaut
    Ici, il ne s'agit pas d'être expert en Windev, mais expert en programmation, au sens large (et le mot expert ...) Le même raisonnement s'appliquerait dans n'importe quel langage.

    Ton programme, il fait quoi :

    . Tu regardes chacun des 10 champs, du premier au dernier
    . Si le champ est vide, tu ne fais rien.
    . Si le champ n'est pas vide , tu écris dans sai_resultat la valeur du champ que tu viens de lire. Et tu continues le traitement : tu recherches une nouvelle valeur, pour écraser ce que tu viens d'écrire

    Pour les débutants en programmation, on leur conseille en général de dessiner un algorithme.

    Ici, tu n'as pas fait cette étape, tu n'as pas réfléchi à l'algorithme. tu as écris un cheminement (faux dans ce cas), et tu as aussitôt traduit en langage informatique. La démarche n'est pas bonne. Il faut d'abord érire un algorithme (avec des dessins comme sur le lien que j'ai donné), et quand on est convaincu que l'algorithme est correct, tu peux traduire l'algorithme dans le langage de ton choix.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    Windev
    Inscrit en
    Novembre 2018
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Windev

    Informations forums :
    Inscription : Novembre 2018
    Messages : 68
    Points : 0
    Points
    0
    Par défaut
    OK je vais essayer merci

Discussions similaires

  1. Réponses: 11
    Dernier message: 11/04/2015, 12h33
  2. Utilitaire Access pour taille des champs
    Par crovette51101 dans le forum Access
    Réponses: 4
    Dernier message: 21/11/2006, 18h26
  3. [MySQL] Erreur pour modifier des champs
    Par kevinf dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 12/11/2006, 21h47
  4. Problème awk pour récuperer des champs
    Par ab_2006 dans le forum Shell et commandes GNU
    Réponses: 15
    Dernier message: 21/09/2006, 09h36
  5. Normes pour taille des champs (obs, libellé...)
    Par Kozher dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 13/08/2005, 23h46

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