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 :

Afficher les 2 colonnes d'une combo table [WD17]


Sujet :

WinDev

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Août 2006
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 582
    Points : 265
    Points
    265
    Par défaut Afficher les 2 colonnes d'une combo table
    Bonjour,
    j'ai une combo dont le déroulé est de type table, qui affiche une table Villes contenant 2 colonnes : Nom et CodePostal. Tout s'affiche comme il faut, mais lorsqu'on sélectionne une ligne, dans la case de la combo n'apparait que l'une des 2 colonnes (soit le CodePostal, soit le Nom, selon le réglage effectué dans l'onglet Contenu / Colonne affichée de la combo).
    Or moi, je souhaiterais afficher les 2 informations (CodePostal + Nom). Comment faire ?

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 276
    Points : 739
    Points
    739
    Par défaut
    Bonsoir,

    Dans la table, tu définis une 3ème colonne qui contient ce que tu souhaites afficher dans le champ combo (CP+VILLE)
    Tu mets cette colonne en invisible pour ne pas l'avoir quand tu déroules.
    Et tu sélectionnes cette colonne comme "colonne affichée" dans le champ combo

    Voila !

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Août 2006
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 582
    Points : 265
    Points
    265
    Par défaut
    Autrement dit, tu veux dire créer une clé composée CP+Nom. J'ai déjà essayé mais alors là, problème : je ne sais pas pourquoi, mais la clé composée n'apparait pas dans la liste des rubriques lorsque je veux l'affecter dans l'onglet Liaison de la combo (je m'en étais déjà rendu compte à propos d'autres clés composées créées dans d'autres fichiers : on ne peut ni les lier à un champ, ni les utiliser dans une requête. Pourquoi ? Mystère....)

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Août 2006
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 582
    Points : 265
    Points
    265
    Par défaut
    Je viens de voir dans l'aide en ligne :
    Une clé composée est stockée sous forme de chaîne binaire. Sa valeur ne peut pas être affichée (ni dans un champ, ni sous le débogueur, ...).
    Impossible donc d'utiliser une clé composée !

  5. #5
    Rédacteur/Modérateur

    Avatar de dsr57
    Homme Profil pro
    Analyste programmeur senior
    Inscrit en
    Octobre 2003
    Messages
    1 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Analyste programmeur senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 139
    Points : 4 681
    Points
    4 681
    Billets dans le blog
    22
    Par défaut
    Pourquoi ne pas programmer le remplissage de ta combo ?

  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 451
    Points
    2 451
    Par défaut
    Bonjour,

    Le plus simple sur le plan de la programmation générale du projet est d'ajouter une Rubrique "CP - Localité" et de l'afficher quand souhaité.

    Les fichiers CP ne sont a priori pas volumineux. Ce ne sera donc pas dramatique au niveau occupation disque ou mémoire.

    Hemgé

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Août 2006
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 582
    Points : 265
    Points
    265
    Par défaut
    OK. Donc soit :
    • j'effectue une requête sur mon fichier Villes, puis je crée des chaines en concaténant les rubriques CP et Nom, et je remplis ma combo avec (solution de dsr17)
    • je crée une rubrique CP-Nom qu'il faudra remplir aussi par programmation lors du remplissage du fichier Villes et qui contiendra les chaines CP + Nom (Hemgé)

    Un peu lourd pour une fonctionnalité qu'il aurait été si simple de prévoir à la base...
    Merci.

  8. #8
    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 451
    Points
    2 451
    Par défaut
    Oui, faut "faire avec", mais à côté de cela il y a pas mal de bonus ... !

    Si vous adoptez la solution de la requête, il ne faut pas concaténer vos chaînes après, mais dans le corps de la requête.

    Rien ne vous empêche de concaténer des chaînes que vous sélectionnez par ailleurs, avec une requête du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select Nom, CodePostal, CONCAT(CodePostal,' - ',Nom) as CP_Affiche From Fichier
    Bon travail

    hemgé

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Août 2006
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 582
    Points : 265
    Points
    265
    Par défaut
    OK. Merci pour ces précisions.

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Août 2006
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 582
    Points : 265
    Points
    265
    Par défaut
    Je viens de tester ta requête mais l'éditeur SQL me met une erreur sur le CONCAT => mot CONCAT inattendu.
    J'ai consulté mon bréviaire SQL et essayé la syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Villes.CodePostal AS CodePostal + ' ' + Villes.Nom AS Nom FROM Villes
    mais le + est souligné ("Mot '+' inattendu)
    Comment faire ?

  11. #11
    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 451
    Points
    2 451
    Par défaut
    Re bonjour

    Si vous passez par le générateur de requêtes, je ne sais pas car je ne l’ai jamais utilisé (et ne compte pas le faire).

    + n'est pas un opérateur de concaténation pour SQL
    CONCAT est tout à fait indiqué et connu se Windev (cft l'aide)
    "CONCAT inattendu" n'est pas spécifique ici et signifie qu'il y a une erreur quelque part.

    Aviez-vous bien utilisé de simples quottes et non les doubles ?

    Passez par la saisie directe du code SQL (2e écran proposé dans l’écran « Type de requête » quand on crée une nouvelle requête) et saisissez :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Villes.CodePostal AS CodePostal, Villes.Nom AS Nom, CONCAT(Villes.CodePostal, ' ',  Villes.Nom) 
    FROM Villes 
    ORDER BY CodePostal
    Sauvez (précaution)
    Testez via Go
    Je serais étonné que cela ne fonctionne pas.

    Je vais toujours à la ligne avant chaque grand bloc logique, pour la visibilité, mais il faut alors veiller à laisser un espace en fin de ligne, sinon il "fusionne" le dernier mot de la ligne et le premier de la suivante à l'interprétation et erreur !


    Normalement, le nom du fichier ne doit pas être repris, mais je l'ai fait par sécurité puisque vous avez un problème.

    Pour l’utiliser dans votre programme, passer par la fonction HExécuteRequêteSQL(), avec le texte de votre requête en dur ou, mieux, sauvé dans une variable chaîne.
    Ou alors affichez le dans le générateur de requêtes et resauvez le (? sans garantie)

    ORDER BY pourrait alors se faire par code postal ou nom, en passant par ConstruitChaîne et un paramètre. Je vous laisse voir.

    J'espère que ce sera bon ce coup-ci !

    Hemgé

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Août 2006
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 582
    Points : 265
    Points
    265
    Par défaut
    Effectivement, le copier-collé du code fonctionne très bien.
    Encore merci pour tout.

  13. #13
    Membre actif
    Profil pro
    Inscrit en
    Août 2006
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 582
    Points : 265
    Points
    265
    Par défaut
    OOPs ! Un dernier petit souci, et après ce sera tout
    Tout marche impec, je sélectionne une ligne de la combo mais dès que celle-ci perd le focus, elle se vide et n'affiche plus rien ! (Je n'ai absolument aucun code dans les évènements de la combo)
    Et dès que je reclique dans la case de la combo, le texte réapparait !?

  14. #14
    Rédacteur/Modérateur

    Avatar de dsr57
    Homme Profil pro
    Analyste programmeur senior
    Inscrit en
    Octobre 2003
    Messages
    1 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Analyste programmeur senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 139
    Points : 4 681
    Points
    4 681
    Billets dans le blog
    22
    Par défaut
    Si j'ai bien suivi, tu remplis ta combo par programmation ?
    Si c'est le cas vérifie que dans l'onglet Contenu, ce soit coché programmation.

    Je reviens sur un point de la conversation :

    je crée une rubrique CP-Nom qu'il faudra remplir aussi par programmation lors du remplissage du fichier Villes et qui contiendra les chaines CP + Nom
    Je ne vois pas l'intérêt de créer une telle rubrique, car comme le prouve Hemgé, on peut l'obtenir en concaténant les 2 autres rubriques. Cela va surcharger ton fichier Hyperfile ...

  15. #15
    Membre actif
    Profil pro
    Inscrit en
    Août 2006
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 582
    Points : 265
    Points
    265
    Par défaut
    Finalement, j'ai bien retenu la solution de Hemgé :
    création d'une requête qui, à partir du fichier Villes, crée une variable contenant la concaténation de CodePostal + Ville. La combo est liée à cette requête et affiche la colonne CP_Ville mais avec le problème d'affichage évoqué...

    Pour info, voici le paramétrage de la combo et des colonnes de la table affichée:
    Nom : requete.png
Affichages : 1587
Taille : 151,2 Ko

  16. #16
    Membre actif
    Profil pro
    Inscrit en
    Août 2006
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 582
    Points : 265
    Points
    265
    Par défaut
    Pour mon petit souci d'affichage, dans une autre fenêtre, j'ai la même combo liée à la même requête, et là, tout se passe comme il faut : lors de la perte de focus, l'information reste affichée...

  17. #17
    Membre actif
    Profil pro
    Inscrit en
    Août 2006
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 582
    Points : 265
    Points
    265
    Par défaut
    J'ai trouvé !
    J'avais laissé le type de déroulé de la combo sur Table, alors que maintenant il faut la passer sur Liste, puisqu'elle n'affiche qu'une seule rubrique !
    Merci !

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

Discussions similaires

  1. [XL-2007] Afficher les deux colonne dans une combobox
    Par cedcyr dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 14/03/2013, 00h12
  2. [MySQL] Afficher les noms manquants d'une table
    Par gastoncs dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 20/10/2009, 09h29
  3. Concaténer tout les colonnes d'une même table
    Par bobosh dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 31/07/2008, 11h35
  4. Réponses: 13
    Dernier message: 20/04/2007, 17h30
  5. Réponses: 8
    Dernier message: 19/04/2007, 19h41

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