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 :

[WD10Exp]Remplir une table avec la sélection d'une combo


Sujet :

WinDev

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 31
    Points : 14
    Points
    14
    Par défaut [WD10Exp]Remplir une table avec la sélection d'une combo
    Bonjour à tous!
    je suis tout jeune (donc sans reel experience), tout nouveau sur le site et tout débutant en WinDev et Wlangage

    j'ai conscience que ma question est basique mais je parcours le forum, ainsi que d'autre sites, depuis plusieurs jours mais je n'ai pas réussis à trouver le code approprié à mon problème...

    petite info au préalable: bienque WinDev soit très orienté rad, j'essaye le plus possible de développer sans l'assistant pour comprendre ce que je fais.

    Alors s'il vous plait soyez indulgent si je ne comprend pas les réponses du genre : "tu clic là, tu ferme les yeux, tu les réouvrent et voilà"
    merci
    (mais il me semble que ça ne soit pas le cas.. )


    ma situation est la suivante:

    mon appli remplie tout les champs d'un fichier,
    à chaque exécution de cette appli, je créé une nouvelle ligne de champs,
    je souhaiterais choisir l'une de ces ligne grace à une combo,
    pour pouvoir récupérer les champs correspondants à la ligne choisie dans une table.

    j'ai réussis à récuperer les ligne dans ma combo,
    (-> pour ceux qui n'y arriverais pas: clic droit sur la combo,description, contenu,Fichier parcouru->Fichier correspondant)

    mon tableau renvoi toutes les lignes de mon fichier,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    HLitPremier(NOM_FICHIER,IDFICHIER)
     
    TANTQUE PAS HEnDehors
      TableAjoute(NomTable,NOM_FICHIER.Champ1+TAB+NOM_FICHIER.Champ2)
      HLitSuivant(NOM_FICHIER)
    FIN

    mais comment lui dire de tenir compte de la selection de la combo?

    j'ai essayer pas mal de trucs mais rien de concluant...
    sachant que plusieurs solutions sont sans doute possibles je voudrais savoir comment vous feriez

    merci d'avoir lu jusque là

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    19 647
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 19 647
    Points : 32 889
    Points
    32 889
    Par défaut
    Petites questions : (
    - Pourquoi ne pas avoir lié ta table au fichier ?
    - ta combo est indispensable ? Tu sais que tu peux sélectionner directement dans la table ?

  3. #3
    Membre averti
    Avatar de mboubidi
    Homme Profil pro
    DBA Oracle
    Inscrit en
    Novembre 2006
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Algérie

    Informations professionnelles :
    Activité : DBA Oracle
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 326
    Points : 401
    Points
    401
    Par défaut mboubidi
    c'est quoi la version de ton Windev?
    Ce que tu veux me dire, est-ce vrai? Est-ce bien? Est-ce utile? Sinon je ne veux pas l'entendre.

    Pensez a

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 31
    Points : 14
    Points
    14
    Par défaut
    merci de répondre rapidement^^

    c'est un WinDev10 (Express)

    oui Guardian, mais j'ai déjà lié ma table au fichier et d'ailleurs j'arrive à rebalancer tout mes champs,
    mais je voudrais n'afficher qu'une partie de ces champs selon le choix selectionné dans ma combo..

    ce n'est peut être pas possible... (sous Express surtout)

    infos:
    un fichier est bien composé de colonnes et de lignes n'est-ce pas?
    -les colonne sont mes champs à remplir (par mon appli)
    -les lignes sont créées à chaque fois que mon appli enregistre de nouveaux champs

    j'aimerais par le biais de ma combo choisir une ligne en particulié
    et donc actualiser le tableau des champs de la nouvelle ligne selectionnée

    encore merci

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    19 647
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 19 647
    Points : 32 889
    Points
    32 889
    Par défaut
    D'abbord :
    - Il n'y a pas à ma connaissance de limitations à ce que tu veux faire sous Express
    - Ta "définition" d'un fichier est correcte

    Ensuite :
    Je ne suis pas sûr de comprendre ce que tu veux faire.
    Tu as :
    - un fichier
    - une table
    - un combo
    et tu veux :
    je voudrais n'afficher qu'une partie de ces champs selon le choix selectionné dans ma combo..
    Sélectionner dans une combo, liée au fichier pour avoir la totalité des enregistrements affichés, quelques enregistrements (lignes) qui devraient se retrouver ensuite dans la table ?

    Dans ce cas, il te faut évidemment une table mémoire et non une table fichier.
    Depuis la combo, tu récupères l'enregistrement dans le fichier et tu l'ajoutes dans la table.

    Le plus simple est de demander à ta combo de retourner l'ID du fichier
    Ensuite tu places ce code dans le code de Sélection d'une ligne de la Combo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    // Lit l'enregistrement correspondant au N° d'ID retourné pas la combo
    HLit(Test_Fich,Combo_Test_Fich)
    // Ajoute les champs de la fiche lue à la Table (Dans ce cas-ci, 3 champs Nom, Prénom, Date)
    TableAjouteLigne(Table1,Test_Fich.nom,Test_Fich.prenom,Test_Fich.date)

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 31
    Points : 14
    Points
    14
    Par défaut
    merci pour ces confirmations

    d'accord alors je précise:

    il s'agit de Sites (commerciaux, d'entreprises etc..) où il est disposé des Capteurs et des Pointeurs.
    Je rentre, dans une nouvelle "ligne", les données d'un nouveau Site à chaque enregistrement.

    voici les champs principaux de mon Fichier:

    -ID_Site
    -NomDuSite
    -Pointeur1_Nom
    -Pointeur1_Periode
    -Pointeur2_Nom
    -Pointeur2_Periode
    -Capteur1_etat
    -Capteur2_etat

    jusqu'a maintenant, je remplissais ma combo avec le "NomDuSite" du Fichier
    et la table avec tout les autres champs du Fichier..

    donc pour la combo c'est bon,
    mais du coup la table me ressort les champs de tout les Sites...

    je pense en effet qu'il faut une table mémoire mais quel est le code (ou les clics) qui indique a la table de rechercher seulement les champs associés à la "ligne" de la valeur affichée dans la combo?

    ne dois-je pas récupérer l'ID du Site dans la table ou un truc comme ça?

    sans doute qu'une table n'est pas l'idéal car je ne veux ressortir qu'une "ligne"...

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 31
    Points : 14
    Points
    14
    Par défaut
    oops, tu as fais une modif

    dac je vais étudier ça alors...
    je vous tiens au courant

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    19 647
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 19 647
    Points : 32 889
    Points
    32 889
    Par défaut
    En définissant ID_Site comme valeur retournée de ta combo, ça devrait fonctionner avec le code que je t'ai proposé.

    L'utilisation d'une table n'est pas obligatoire.
    Tu peux récupérer les valeurs dans une/des variable(s) par ex.

    MaVar1=NomFich.NomChamp1
    MaVa2r=NomFich.NomChamp2
    ou
    MaVar=NomFich.NomChamp1+sep+NomFich.NomChamp2

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 31
    Points : 14
    Points
    14
    Par défaut
    merci beaucoup

    Windev ne m'autorise pas la fin de la première ligne
    il me propose:

    // Lit l'enregistrement correspondant au N° d'ID retourné pas la combo
    HLit(EXPRESS_Site1.IDEXPRESS_Site1,hNumEnrEnCours)
    // Ajoute les champs de la fiche lue à la Table
    TableAjouteLigne(TRésultat,EXPRESS_Site1.Point1_nom,EXPRESS_Site1.Point1_libelle)
    j'arrive à renseigner la combo mais toujours pas d'affichage au niveau du tableau..

    mais je suis étonné de ne rien devoir faire avec la table...
    ni avec le code de la fenêtre..
    ne manque t-il pas quelque chose?

    je suis aussi tombé sur ce code, peut-il m'aider?
    ComboListe[ComboListe]= TableAjouteLigne(TRésultat)

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 31
    Points : 14
    Points
    14
    Par défaut
    je n'ai pas bien saisi où est la valeur de l'ID retournée par la combo, est-ce que mon exemple précédant est bon?

    je garde mon appli sans variables car je dois démontrer plusieurs procédés,
    mais l'idée des variables m'interresse beaucoup et me parrait plus simple, mais peux tu me dire où les déclarées?
    faut-il faire un autre topic, oubien est-ce inutile vu qu'il n'y a que 2 posts là dessus?

    pour info: ma combo s'appelle ComboListe, ma table TResultat et mon fichier EXPRESS_Site1

  11. #11
    Expert éminent sénior

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    19 647
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 19 647
    Points : 32 889
    Points
    32 889
    Par défaut
    Il ne faut pas oublier de demander à ta combo de retourner l'ID du fichier (cf la description de la combo)
    Si ce n'est pas fait à la création de la combo, il faut le faire dans la description de la combo onglet "Contenu", 'Rubrique mémorisée' sélectionner l'ID du fichier (ID_Site)

    Je vais réécrie le code avec tes noms d'objet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ma combo = ComboListe
    ma table = TResultat
    mon fichier = EXPRESS_Site1
    et de champ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    -NomDuSite
    -Pointeur1_Nom
    -Pointeur1_Periode
    -Pointeur2_Nom
    -Pointeur2_Periode
    -Capteur1_etat
    -Capteur2_etat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    // Lit l'enregistrement correspondant au N° d'ID retourné pas la combo
    HLit(EXPRESS_Site1,ComboListe)
    // Ajoute les champs de la fiche lue à la Table (Dans ce cas-ci, 3 champs Nom, Prénom, Date)
    TableAjouteLigne(TResultat,EXPRESS_Site1.NomDuSite,EXPRESS_Site1.Pointeur1_Nom,EXPRESS_Site1.Pointeur1_Periode,EXPRESS_Site1.Pointeur2_Nom,EXPRESS_Site1.Pointeur2_Periode,EXPRESS_Site1.Capteur1_etat,EXPRESS_Site1.Capteur2_etat)
    Attention, dans mon exemple la table et la combo sont dans la même fenêtre

    Il n'y a aucun code à mettre dans la table puisque c'est le code de la combo qui remplit la table.

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 31
    Points : 14
    Points
    14
    Par défaut
    dac merci

    alors pour la combo j'enlève cette partie:
    HLitPremier(EXPRESS_Site1,IDEXPRESS_Site1)
    TantQue pas H.EnDehors
    ListeAjoute(ComboListe,EXPRESS_Site1.Nom_Site1)
    HLitSuivant(EXPRESS_Site1)
    FIN
    qui ne me sers plus à rien vu que je le défini par description

    pour la table, je vérifie qu'il n'y ai rien dans le code ni dans le contenu de la description (je n'oublie pas d'enregistrer )

    oui en effet, tu fais bien de préciser, au départ j'avais séparé la combo et la table dans deux fenêtres différentes mais tout fonctionne très bien dans une seule fenêtre

    merci beaucoup, problème résolu!

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

Discussions similaires

  1. Remplir un SelectOneMenu avec le contenu d'une table de base de données
    Par lanokims dans le forum Développement Web en Java
    Réponses: 1
    Dernier message: 09/09/2014, 12h02
  2. Remplir une table avec les données d'une base
    Par doc dans le forum Général Java
    Réponses: 2
    Dernier message: 25/06/2012, 00h48
  3. [MySQL] Remplir une table avec les données d'une autre table
    Par Souri84 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 26/11/2010, 19h41
  4. Remplir une table avec le résultat d'une instruction SQL
    Par jbeu dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 02/09/2007, 23h49
  5. [C#] Remplir une combobox avec le champs d'une table Access
    Par Damsou dans le forum Windows Forms
    Réponses: 4
    Dernier message: 23/06/2005, 15h31

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