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

Accès aux données Discussion :

[C# 2.0] Comment résoudre un souci de lecture DataTable/BindingSource ?


Sujet :

Accès aux données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 228
    Points : 117
    Points
    117
    Par défaut [C# 2.0] Comment résoudre un souci de lecture DataTable/BindingSource ?
    J'ai un soucis pour lire une valeur d'un champ sur un enregistrement d'une table. Je vais essayer d'expliquer au plus clair :
    Dans le code ci dessous, les BS_**** sont des bindingsource.
    J'ai une relation entre le binding Appellation et Région.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    //Source du combo Region (table région en détail sur table pays)
    string chaineSQL_Region = "SELECT REG_ID, REG_IDNOMPAYS,
     REG_NOMREGION FROM Regions ORDER BY REG_NOMREGION";
    OleDbDataAdapter DBA_Region = new OleDbDataAdapter
    (chaineSQL_Region, m_connexion);
    DBA_Region.Fill(dset, "Regions");
    BS_Region.DataSource = BS_Pays;
    BS_Region.DataMember = "Rel_Pays_Regions";
    cbxRegion.DataSource = BS_Region;
    cbxRegion.DisplayMember = "REG_NOMREGION";
     
    //Source du combo Appellation (table appellation en détail sur table
     région)
    string chaineSQL_Appellation = "SELECT APL_ID, APL_NOMAPPELLATION,
     APL_PAYS, APL_REGION, APL_TYPEROUGE, " +
     "APL_TYPEBLANC, APL_TYPEBLANCLIQ, APL_TYPEROSE, APL_TYPEGRIS,
     APL_TYPEJAUNE, " +
     "APL_TYPEEFFEBLANC, APL_TYPEEFFEROSE, APL_TYPEEFFEROUGE,
     APL_TYPEAUTRES " +
     "FROM Appellation ORDER BY APL_NOMAPPELLATION";
    OleDbDataAdapter DBA_Appellation = new OleDbDataAdapter
    (chaineSQL_Appellation, m_connexion);
    DBA_Appellation.Fill(dset, "Appellation");
    BS_Appellation.DataSource = BS_Region;
    BS_Appellation.DataMember = "Rel_Regions_Appellation";
    cbxAppellation.DataSource = BS_Appellation;
    cbxAppellation.DisplayMember = "APL_NOMAPPELLATION";
    Ensuite je désire effectuer ma lecture dans la table Appellation sur l'enregistrement sélectionné via le binding source qui est en détail sur Région.
    C'est là que j'ai mon souci car je récupère l'index du binding
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int a = BS_Appellation.Position;
    qui ne correspond pas, bien évidemment à l'index de la table appellation qui elle n'est pas en détail
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    VF = (bool)dset.Tables["Appellation"].Rows[a][dset.Tables
    ["Appellation"].Columns["APL_TYPEROSE"]];
    J'espère avoir été assez clair et voilà ma question :
    Est-il possible d'effectuer la lecture directement via le binding BS_Appellation, genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BS_Appellation.Current ????
    où si vous avez une meilleure suggestion! Merci beaucoup pour votre aide.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 228
    Points : 117
    Points
    117
    Par défaut
    Pour le moment, j'ai trouvé une autre solution de dépannage, j'utilise un select
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    string expression = "APL_NOMAPPELLATION = '" + this.cbxAppellation.Text + "'";
    DataRow[] Lignes;
    Lignes = null;
    Lignes = dset.Tables["Appellation"].Select(expression);
    VF = Convert.ToBoolean(Lignes[0][4].ToString());
    C'est un peu bête comme solution car j'ai besoin de la ligne en cours donc normalement pas besoin de select et avec ce select je pourrais tomber sur plusieurs enregistrements.

Discussions similaires

  1. [C# 2.0] Comment récupérer le type de données d'un DataTable ?
    Par dymezac dans le forum Accès aux données
    Réponses: 4
    Dernier message: 23/10/2006, 17h58
  2. Réponses: 6
    Dernier message: 04/10/2006, 18h40
  3. Réponses: 7
    Dernier message: 27/06/2006, 20h16
  4. [VB.NET]Comment afficher 1 progressbar lors d'une lecture fichier ?
    Par evlp2004@hotmail.com dans le forum Windows Forms
    Réponses: 2
    Dernier message: 04/05/2006, 09h00

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