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

ADO.NET Discussion :

Peupler un champ d'une table sur base du contenu d'une autre table


Sujet :

ADO.NET

  1. #1
    Candidat au Club
    Inscrit en
    Septembre 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Peupler un champ d'une table sur base du contenu d'une autre table
    Bonsoir,

    Ce topic a certainement été abordé quantité de fois.
    N'arrivant pas à formuler mes recherches d'une façon suffisamment claire et précise pour pouvoir être compris par un moteur de recherche, je le décris ici en espérant que vous pardonnerez à un pauvre débutant en SQL .

    J'utilise MS Visual Developper 2008 en conjonction avec MS SQL Server 2008, les 2 en version EXPRESS.

    J'ai 2 tables dans la même db.
    Table 1 : ACP
    Champ 1 : ACP_ID
    ...

    Table 2: Prop
    Champ 1 : PROP_ID
    Champ 2 : ACP_ID

    Il existe un lien entre PROP.ACP_ID et ACP.ACP_ID.

    Dans mon fichier ModProp.aspx, j'ai placé un GRIDVIEW qui me permet la visualisation de la table PROP ainsi que sa mise à jour.
    Si j'introduis une valeur de ACP_ID qui n'existe pas dans ma table ACP j'ai un message d'erreur . Le lien est donc correctement établi.

    Mon souhait:
    Lors de la création ou modification d'un enregistrement de la table PROP, il me soit proposé la liste des valeurs possibles pour ACP_ID.

    Merci à tous de me mettre sur la voie

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Points : 2 201
    Points
    2 201
    Par défaut
    Dans une grille de donnée, la façon la plus efficace de présenter les valeurs possible de la table mère c'est l'utilisation d'une colonne de type ComboBox (liste déroulante) ayant pour source de données la table mère.

    Ainsi sur chaque ligne de la grille présentant Prop tu as une liste déroulante contenant toutes les valeurs de ACP.

    Néanmoins d'un point de vue ergonomique, cette solution est appropriée uniquement s'il n'y a pas trop d'enregistrement dans la table ACP (max 200-300).
    Afficher un fichier client de 10'000 entrée dans la liste déroulante n'est pas une bonne idée.

    Dans le cas de nombreux enregistrement sur la table mère, il est préférable d'utiliser une colonne de type bouton affichant un deuxième formulaire permettant de parcourir (filtre, recherche) et sélectionner une valeur de la table mère.

    J'espère que ces quelques lignes t'aideront à trouver l'inspiration.

  3. #3
    Candidat au Club
    Inscrit en
    Septembre 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Bonjour Sinople,

    Tenant compte de ta remarque concernant l'affichage d'un nombre élevé d'enregistrement, j'ai quelque peu modifier mon projet initial.

    Je travaille désormais en 2 temps.
    1° J'affiche la liste des enregistrements de ma table PROP.
    2° Lorsque le bouton Details est utilisé, un écran de saisie est affiché en dessous de la grille.

    Ci-joint tu trouveras une copie de mon écran.
    Comment faire pour insérer ce combo box dont tu me parles ?

    -Ben-
    Images attachées Images attachées  

  4. #4
    Candidat au Club
    Inscrit en
    Septembre 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Ok, je pense avoir trouvé la solution que je recherchais.
    Je la donne en détail pour d'éventuelles remarques ou propositions

    Pour afficher les enregistrements de la table PROP, j'ai opté pour un GRIDVIEW.
    Comme je suis un vieux dinosaure, je ne souhaite pas autoriser la modification des enregistrements dans une interface de visualisation.
    J'ai donc ajouter un bouton de type SELECT dans la GridView.

    Le fait d'appuyer sur ce bouton, ouvre un DetailsView affichant l'enregistrement sélectionné.
    Cette vue de détail est dotée d'un lien Edit.

    Lorsque ce lien est activé, le champ ACP_ID est changé en COMBO BOX, affichant la liste de toutes les valeurs de ACP_ID contenues dans la table ACP.

    Mon dernier soucis à présent est d'afficher non pas ACP_ID, mais bien le champ Nom associé à ce ACP_ID !

    Merci à toi Sinople pour l'idée que tu m'as donnée

  5. #5
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Points : 2 201
    Points
    2 201
    Par défaut
    Pour ton soucis d'affichage il y a normalement deux propriété sur les comboBox (en tout cas en winform pour le web ça doit être pareille), Une pour le texte d'affichage et une autre pour la valeur (ValueMember et DisplayMember).

    Bonne chance

  6. #6
    Candidat au Club
    Inscrit en
    Septembre 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    J'avais repéré ces deux propriétés, mais j'avais des messages d'erreurs durant la mise à jour de l'enregistrement quand je modifiais l'un ou l'autre champ . J'ai rebooté ma machine et tout est rentré dans l'ordre.
    Je pensais que les environnements de développement étaient plus stables à l'heure actuelle

    Tu vas dire que j'abuse, mais as-tu une idée quant au refresh automatique du GRIDVIEW après l'update?

  7. #7
    Candidat au Club
    Inscrit en
    Septembre 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    J'ai trouvé une solution sur internet, mais je ne comprends pas l'action de ce paramètre.
    J'ai placé la valeur EnableViewState de mon gridview à FAUX.
    Que fait ce paramètre ?

  8. #8
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Points : 2 201
    Points
    2 201
    Par défaut
    Aucune idée, regarde la doc.

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

Discussions similaires

  1. Réponses: 52
    Dernier message: 30/07/2015, 22h23
  2. Réponses: 7
    Dernier message: 10/03/2014, 14h19
  3. Réponses: 3
    Dernier message: 18/02/2013, 12h09
  4. Sauvegarde d'une table sur base de temps
    Par manas dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 31/01/2012, 20h54
  5. Requête création de table sur base mise en réseau
    Par boss dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 24/01/2007, 15h49

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