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 :

Remplir des champs par sélection d'un champ combo [WD18]


Sujet :

WinDev

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2014
    Messages : 16
    Points : 7
    Points
    7
    Par défaut Remplir des champs par sélection d'un champ combo
    Bonjour à tous,
    Nouveau sur WinDev, je bute actuellement sur un problème depuis un bon moment, et je trouve pas de solutions.
    J'ai une table (EMPLOYÉ)contenant un certain nombre d'enregistrement :
    ID_EMPLOYÉ
    Noms_EMPLOYÉ
    Prénoms_EMPLOYÉ
    Contact_EMPLOYÉ
    Profession_EMPLOYÉ
    Matricule_EMPLOYÉ


    Certain de ces enregistrements sont reliés à des champ de saisie (non modifiable) dans ma fenêtre :

    Prénoms_EMPLOYÉ ==> SAI_Prénoms_Employé
    Contact_EMPLOYÉ ==> SAI_Contact_Employé
    Profession_EMPLOYÉ ==> SAI_Profession_Employé
    Matricule_EMPLOYÉ ==> SAI_Matricule_Employé

    J'ai également un champ combo (COMBO_NomsEmployé) relié à une requête (REQ_NomsEmployé) sur l'enregistrement Noms_EMPLOYÉ.
    Ce que je veux, c'est que lorsque je fais un choix de nom dans ma combo, les champs de saisie dans ma fenêtre se remplissent automatiquement de leur enregistrement correspondant.
    Donc pour y parvenir, j'ai tapé le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // Sélection d'une ligne de COMBO_NomsEmployé
     
    HExécuteRequête(REQ_NomsEmployé)
     
    HLitPremier(EMPLOYÉ,ID_EMPLOYÉ)
     
    TANTQUE PAS HEnDehors()
     
    HLitSuivant(EMPLOYÉ, ID_EMPLOYÉ)
     
    FIN
     
    FichierVersEcran()
    Mais quand je l'execute, la combo reste bloqué sur un seul et même nom, quelque soit le choix que je fais dans celui ci.
    Les champs de ce nom se remplissent bien, mais la combo ne change pas de nom lorsque je le modifie.
    Quelqu'un peut-il m'aider à comprendre et resoudre ce casse-tête ?
    Je rappelle biensur que les champs de saisie et la combo sont sur la même fenêtre.

    Merci d'avance pour vos participations.

    Cordialement

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut Bienvenue sur Windev Mdeacon7
    Ton problème semble assez simple à régler.

    Perso, je ne suis pas fan des requête dans ce genre de cas.
    Je préfère n'utiliser que tu code, je trouves cela plus simple à gérer et surtout, si tu crées des requêtes pour toutes les actions, tu vas te retrouver avec une montagnes d’éléments dans ton projet.
    A vérifier :
    - Ton Combo doit renvoyer l'Id de l'employé pour pouvoir le rechercher dans le fichier
    - Selon ton besoin, 2 solutions selon moi :
    1 - Si tu veux juste afficher les donnée à titre d'info : Tu peux créer des champs lib sans liaison avec le fichier de donnée
    2 - Si tu veux que les données soient modifiables et enregistrables : Alors tu crées des champs de saisies en liaison avec le fichier de donnée

    Suggestion de code pour la solution 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Si COMBO_Nom_Employés > 0 alors //on vérifie si un salarié a bien été sélectionné
         Si HLitRecherchePremier(EMPLOYE,Id_EMPLOYE,COMBO_Nom_Employés) = vrai alors //on vérifie que l'on trouve bien le salarié dans le fichier de donnée
               LIB_Nom_Employé = EMPLOYE.Nom_EMPLOYE
               LIB_Prenom_Employé = EMPLOYE.Prenom_EMPLOYE
               LIB_Matricule_Employé = EMPLOYE.Matricule_EMPLOYE
               //Etc... autant de lib que tu souhaites
         Fin
    Fin
    Suggestion de code pour la solution 2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Si HLitRecherchePremier(CHAuffage,CHA_Num,COMBO_CHAuffage) Alors //On vérifie que l'on trouve bien le salarié dans le fichier
             FichierVersEcran() //on actualise les données de la fenêtre
    Fin
    Voilà

    Bon travail et amuse toi bien avec Windev ;-)
    Les solutions les plus simples sont les plus efficaces

  3. #3
    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,

    Tout d'abord, j'attire votre attention sur l'existence de diverses balises et notamment les balises # [Code] pour mettre vos messages en forme.
    Voyez au-dessus de la fenêtre de saisie de vos messages et les règles du Club.

    Concernant votre problème, vous ne passez à aucun moment la valeur de l'Id ou de la clé de l'enregistrement désiré à votre programme.
    Vous parcourez l'intégralité de votre fichier (pour Windev, une table au sens SQL est un fichier .fic) puis vous provoquez l'affichage de (nécessairement) la dernière fiche du fichier puisque c'est elle qui est en mémoire au moment où vous demandez l'affichage (FichierVersEcran).


    En principe, une fois la combo remplie, vous n'avez pas besoin d'exécuter une requête.
    Vous devez récupérer la valeur le l'ID liée à la ligne que vous sélectionnez et lire l'enregistrement concerné.
    Je vous laisse relire la doc à ce sujet. C'est la meilleure manière de progresser.

    N'hésitez pas à revenir si cela coince toujours.

    Bon travail

    Hemgé

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2014
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    @lololebricoleur,
    Merci pour votre intervention.
    J'ai essayé votre 2e méthode (car plus approprié à mon besoin) mais rien ne se passe. J'arrive à choisir les noms dans ma combo, mais les informations du nom choisi ne s'affichent pas du tout, les champs restent vide. Je rappelle que la table HFSQL est déjà remplie. Voici ce que j'ai tapé en m'appuyant sur ce que vous m'avez donné

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // Sélection d'une ligne de COMBO_NomsEmployé
    SI HLitRecherchePremier(EMPLOYÉ, ID_EMPLOYÉ, COMBO_NomsEmployé) ALORS //On vérifie que l'on trouve bien le salarié dans le fichier
    	FichierVersEcran() //on actualise les données de la fenêtre
    FIN
    @Hemgé,
    Désolé, je tiendrai compte de ces règles maintenant.
    J'ai bien compris vos explications, car c'est bien ce que je veux faire. Mais ce qui m’embête, c'est comment mettre tout ça en pratique ?
    - Etant donnée que ma combo est lié à une requête, n'est-ce pas nécessaire d'initialiser d'abord cette requête avec la fonction HExécuteRequête() ?
    Je reviens vers vous, car ça coince toujours

    Ci-bas une capture de ma fenêtre contenant la combo et les champs de saisis qui doivent se remplir automatiquement à chaque sélection dans la combo.

    Cordialement

    Nom : Combo.png
Affichages : 4089
Taille : 4,5 Ko

  5. #5
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Bonjour

    Est-ce que ta combo retourne bien ID_EMPLOYÉ ?
    Si ce n'est pas le cas ça ne sert à rien d'aller plus loin

    Il suffit de faire une Trace ou un Info sur sélection de la combo pour bien vérifier ça.
    Si ce n'est pas le cas vérifie bien la valeur retournée par la combo dans ses propriétés

  6. #6
    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,


    Vous devriez lire attentivement la doc sur les combos et essayer de comprendre quelle question de l'assistant de création correspond à quel (détail de quel) onglet de la description d'un combo.
    Ensuite, il faudra vous familiariser avec la signification et la portée de chaque terme (qui correspond en fait à une propriété du champ et, en outre pour certains, à une fonction).
    Si vous ne consentez pas cet effort (cet investissement, en fait), vous resterez toujours dans l'incertitude et l'à peu près.

    Concernant votre problème, en partant du principe que vous n'avez rien fait de particulier,
    - dans la description, onglet contenu : remplissage fichier/requête coché, fichier parcouru : le nom d'une requête et/ou requête intégrée
    - rubrique affichée : Noms_EMPLOYE
    - rubrique mémorisée : ID_EMPLOYÉ
    - rubrique de parcours : <par défaut> si votre requête comporte un tri ou Noms_EMPLOYE, pour avoir un tri par Noms

    Si c'est comme cela, le combo devrait renvoyer l'ID_EMPLOYE comme valeur et il vous (ne) reste (que) à lire la doc pour savoir comment connaître la valeur d'un combo (Ah c'est vache - je sais -,mais indispensable)
    Dans le traitement "Sélection d'une ligne de combo", une lecture de l"enregistrement et sans doute un FichierVersEcran pour mettre vos champs d'affichage à jour.

    Et, inquiétez-vous : même si cela fonctionne ce coup-ci, cela ne fonctionnera pas la prochaine fois, si vous ne prenez le temps de saisir les notions de base, notamment rubrique affichée et rubrique mémorisée.

    Bonnes lectures et bon travail,

    Hemgé

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2014
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    S'il ne s'agissait que de lire la doc, je crois pas que ces forums existeraient. Apparemment, je suis sur un forum d'expert nés, où le genre de question que je pose est dépassé, caduque, puisque d'après vous je ne lis et ne comprends pas assez la doc.
    A mon avis, s' il y a un forum c'est parce que les gens ont besoin de quelque chose en plus que ce qui est écrit dans la documentation officiel, votre expérience par exemple. J'imagine que qu'à chaque fois que quelqu'un pose un problème, vous le renvoyer toujours vers cette doc.

    Je n'ai jamais demandé du code, j'ai juste demandé qu'on m'aide à comprendre ce qui va pas dans ce que j'ai fais, et comment résoudre mon problème.
    A titre de rappel, j'ai décanté la situation, avant votre dernière intervention, mais grâce aux explications de hpascal.
    Quoi qu'il en coûte, je vous remercie tous de m'avoir aidez, j'ose espérer qu'un jour je serai également un membre expert en développement d'applications comme vous.

    Cordialement

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

Discussions similaires

  1. Remplir des input par JS et apostrophes.
    Par JoGoiA dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/03/2008, 18h56
  2. Réponses: 1
    Dernier message: 08/01/2008, 17h01
  3. Mapper des polygones par sélection de couleur
    Par SpaceFrog dans le forum Imagerie
    Réponses: 17
    Dernier message: 14/10/2007, 18h57
  4. Remplir des cellules par 0
    Par eddyG dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 01/10/2007, 15h13
  5. Réponses: 3
    Dernier message: 17/01/2007, 09h33

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