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 :

Glien me pose problème [WD20]


Sujet :

WinDev

  1. #1
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2019
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 88
    Points : 12
    Points
    12
    Par défaut Glien me pose problème
    Bonjour à tous,

    Je suis à la recherche d'un petit conseil pour me débloquer sur quelque chose que je pensais simple mais qui ne fonctionne pas comme je veux.

    J'ai une combo alimentée par une rubrique d'un fichier de données. Une fois une valeur de cette combo sélectionnée, elle alimente un champ table lié à un autre fichier de données. J'ai un bouton pour ajouter les infos de la combo (et autres champs) dans le fichier de données et dans le champ table.

    Tout fonctionne, sauf que dans mon champ table comme dans mon fichier de données, c'est l'indice de la combo qui est renvoyé et pas la valeur de la combo. J'ai cru comprendre qu'en cochant la fonction glien dans l'IHM, cela permettait de résoudre le problème, mais ça ne marche pas chez moi.

    Quelqu'un peut-il m'expliquer ce que j'ai mal fait ? Ce que je dois rajouter dans le code et où ?

    D'avance je vous remercie.

  2. #2
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 057
    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 057
    Points : 9 396
    Points
    9 396
    Par défaut
    Pas 100% sûr, pas vérifié, mais je dirais :
    MaCombo donne un nombre (le n° de la ligne sélectionnée, ou -1 sinon) et MaCombo[MaCombo] donne le contenu de cette ligne. Et si on utilise gLien(), cette 2ème syntaxe donne ce qu'on a mis dans gLien()
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  3. #3
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 808
    Points : 5 267
    Points
    5 267
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Par défaut la combo (resp le champ table) renvoie le n° de ligne de l'élément sélectionné. Ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ValCombo=COMBO_MaCombo
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ValCombo=ListeSelect(COMBO_MaCombo)
    sont équivalents. Il en va de même pour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ValTable=TABLE_MaTable
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ValTable=TableSelect(TABLE_MaTable)
    Dans le suite on utilisera la table Client utilisant les données suivantes :
    N° ligne PK_Client NDX_NomClient
    1 7 Tata
    2 1 Toto
    3 12 Tutu

    Dans une combo, le fait de cocher gLien ne fonctionne que si l'on rempli la combo par programmation en utilisant gLien (ATTENTION la valeur renvoyée est une chaîne)e.g.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    POUR TOUT Client
         ListeAjoute(COMBO_Client,Client.NDX_NomClient+gLien(Client.PK_Client))
    FIN
    Avec le code de sélection suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    nIndCombo est entier
    pkClient est entier sur 8
     
    nIndCombo=ListeSelect(COMBO_Client)
    pkClient=Val(COMBO_CLient)
    Si l'on sélectionne "Toto", nIndCombo vaudra 2 et pkClient vaudra 1.
    Remarque à partir de la v27 gLien est remplacée par gValeurMémorisée.

    Dans le cas d'une combo (resp d'un champ table) alimentée par une table, on a la possibilité (dans l'onglet contenu) de sélectionner la rubrique mémorisée (dans notre cas la PK,) i.e. la valeur renvoyée, qui sera du même type que celle de la rubrique.
    Ainsi avec le code de sélection suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    nIndCombo est entier
    pkClient est entier sur 8
     
    nIndCombo=ListeSelect(COMBO_Client)
    pkClient=COMBO_CLient
    La sélection de "Toto" affectera 2 à nIndCombo et 1 à pkClient.
    Si la rubrique sélectionnée est NDX_NomClient, COMBO_Client renverra "Toto"
    Remarque
    On peut avoir le même comportement par programmation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    COMBO_Client..LiaisonFichier="Client"
    COMBO_Client..RubriqueAffichée="NDX_Client"
    COMBO_Client..RubriqueParcourue="NDX_Client"
    COMBO_CLient..RubriqueMémorisée="PK_Client"
    Exemple d'utilisation: Champ table lié à une combo
    On veut afficher les commandes d'un client qui sera sélectionné dans une combo (resp un champ table)
    COMBO_Client (resp TABLE_Client) sera alimentée par la table CLIENT avec pour Rubrique mémorisée PK_CLient et comme rubrique affichée NDX_NomClient (événtuellemnt triée sur NDX_Client via Rubrique parcourue)
    TABLE_Commande sera alimentée par la requête (REQ_CommandesClient), aura pour rubrique mémorisée PK_Commande et comme colonnes : NoCOmmande, DateCommande, TotalCommande
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT
         PK_Commande,
         AK_NoCommande AS NoCommande,
         NDX_DateCommande AS DateCommande,
         TotalCommande
    FROM
         Commande
    WHERE
         FK_Client={pClient}
    Pour synchroniser le client et ses commandes, il suffira de coder la sélection d'une ligne de COMBO_Client comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    REQ_CommandesClient.pClient=COMBO_Client
    TableAffiche(TABLE_Commandes,taRéExécuteRequête)
    Rq
    TABLE_Commande renvoie PK_Commande, cela pourra être utilisé pour passer la commande en paramêtre à la FI qui affichera le détail d'une ligne, mais ça, c'est une autre histoire
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  4. #4
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2019
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 88
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par Voroltinquo Voir le message
    Bonjour,
    Par défaut la combo (resp le champ table) renvoie le n° de ligne de l'élément sélectionné. Ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ValCombo=COMBO_MaCombo
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ValCombo=ListeSelect(COMBO_MaCombo)
    sont équivalents. Il en va de même pour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ValTable=TABLE_MaTable
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ValTable=TableSelect(TABLE_MaTable)
    Dans le suite on utilisera la table Client utilisant les données suivantes :
    N° ligne PK_Client NDX_NomClient
    1 7 Tata
    2 1 Toto
    3 12 Tutu

    Dans une combo, le fait de cocher gLien ne fonctionne que si l'on rempli la combo par programmation en utilisant gLien (ATTENTION la valeur renvoyée est une chaîne)e.g.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    POUR TOUT Client
         ListeAjoute(COMBO_Client,Client.NDX_NomClient+gLien(Client.PK_Client))
    FIN
    Avec le code de sélection suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    nIndCombo est entier
    pkClient est entier sur 8
     
    nIndCombo=ListeSelect(COMBO_Client)
    pkClient=Val(COMBO_CLient)
    Si l'on sélectionne "Toto", nIndCombo vaudra 2 et pkClient vaudra 1.
    Remarque à partir de la v27 gLien est remplacée par gValeurMémorisée.

    Dans le cas d'une combo (resp d'un champ table) alimentée par une table, on a la possibilité (dans l'onglet contenu) de sélectionner la rubrique mémorisée (dans notre cas la PK,) i.e. la valeur renvoyée, qui sera du même type que celle de la rubrique.
    Ainsi avec le code de sélection suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    nIndCombo est entier
    pkClient est entier sur 8
     
    nIndCombo=ListeSelect(COMBO_Client)
    pkClient=COMBO_CLient
    La sélection de "Toto" affectera 2 à nIndCombo et 1 à pkClient.
    Si la rubrique sélectionnée est NDX_NomClient, COMBO_Client renverra "Toto"
    Remarque
    On peut avoir le même comportement par programmation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    COMBO_Client..LiaisonFichier="Client"
    COMBO_Client..RubriqueAffichée="NDX_Client"
    COMBO_Client..RubriqueParcourue="NDX_Client"
    COMBO_CLient..RubriqueMémorisée="PK_Client"
    Exemple d'utilisation: Champ table lié à une combo
    On veut afficher les commandes d'un client qui sera sélectionné dans une combo (resp un champ table)
    COMBO_Client (resp TABLE_Client) sera alimentée par la table CLIENT avec pour Rubrique mémorisée PK_CLient et comme rubrique affichée NDX_NomClient (événtuellemnt triée sur NDX_Client via Rubrique parcourue)
    TABLE_Commande sera alimentée par la requête (REQ_CommandesClient), aura pour rubrique mémorisée PK_Commande et comme colonnes : NoCOmmande, DateCommande, TotalCommande
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT
         PK_Commande,
         AK_NoCommande AS NoCommande,
         NDX_DateCommande AS DateCommande,
         TotalCommande
    FROM
         Commande
    WHERE
         FK_Client={pClient}
    Pour synchroniser le client et ses commandes, il suffira de coder la sélection d'une ligne de COMBO_Client comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    REQ_CommandesClient.pClient=COMBO_Client
    TableAffiche(TABLE_Commandes,taRéExécuteRequête)
    Rq
    TABLE_Commande renvoie PK_Commande, cela pourra être utilisé pour passer la commande en paramêtre à la FI qui affichera le détail d'une ligne, mais ça, c'est une autre histoire
    Merci pour ce petit cours, je vois comment m'y prendre !

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

Discussions similaires

  1. CFormView::OnIntialUpdate() pose problème
    Par jacklafrip dans le forum MFC
    Réponses: 1
    Dernier message: 26/09/2006, 15h37
  2. caractère \ pose problème
    Par questionneuse dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 11/07/2006, 16h25
  3. Un cast de SmartPointer qui pose probléme
    Par Higestromm dans le forum C++
    Réponses: 3
    Dernier message: 13/10/2005, 10h25
  4. jointure externe avec un where, me pose problème!
    Par Danae dans le forum Langage SQL
    Réponses: 3
    Dernier message: 18/07/2005, 17h37
  5. Réponses: 3
    Dernier message: 17/05/2005, 11h16

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