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

VB.NET Discussion :

Problème d'affichage en cascade de données de tables Access


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 30
    Points : 12
    Points
    12
    Par défaut Problème d'affichage en cascade de données de tables Access
    Bonjour,

    Voici l'état actuel de mon projet d'utilisation de BD Access via VB.NEt :

    Je dispose à présent de 3 tables Access :

    1. Manufacturing (N°,Manufacturing_Name)
    2. Rules (N°,Manufacturing_Name,Rule_Name)
    3. Features (N°,Rule_Name,Feature_Name)


    avec les contraintes d'intégrité référentielles suivantes :
    1. 1 Manufacturing.Manufacturing_Name - Plusieurs Rules.Manufacturing_Name
    2. 1 Rules.Rule_Name - Plusieurs Features.Rule_Name


    que je souhaite lier à 3 ListBox :

    1. ListManufacturing
    2. ListRules
    3. ListFeatures


    Pour ListManufacturing, aucun problème, au chargement de la base, je parvient à la remplir.

    Ensuite, à la sélection d'un item de ListManufacturing, je parviens à mettre à jour les items de ListRules avec le code suivant :

    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
    Private Sub ListManufacturing_SelectedValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListManufacturing.SelectedIndexChanged
     
            'le DataReader permet une lecture la plus rapide mais en lecture seul
            Me.ListRules.Items.Clear()
            'Me.ListRules.Text = "Select the Rule..."
            'Me.ListFeatures.Text = "Select the Feature..."
            Dim MyConnexion As OleDbConnection = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data source=H:\TX\[TX] IHM\Reverse_Engineering_Application.NET\Test.accdb")
            Dim MyCommand As OleDbCommand = MyConnexion.CreateCommand()
            MyCommand.CommandText = "SELECT Rules.Rule_Name FROM Rules WHERE Rules.Manufacturing_Name ='" & Me.ListManufacturing.SelectedItem & "';"
            MyConnexion.Open()
            'ajout des résultats de la requête dans ListRules
            Dim MyReader As OleDbDataReader = MyCommand.ExecuteReader()
            Do While MyReader.Read()
                Me.ListRules.Items.Add(MyReader.GetString(0))
            Loop
            'fermeture du monopole de lecture
            MyReader.Close()
            MyConnexion.Close()
            'fermeture dès la fin de la lecture
            'Dim myReader As OleDbDataReader = Mycommand.ExecuteReader(CommandBehavior.CloseConnection)
     
        End Sub
    Le problème survient avec ListFeatures : j'ai tenté de la remplir en procédant comme ListRules :

    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
    Private Sub ListRules_SelectedValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListManufacturing.SelectedIndexChanged
     
            'le DataReader permet une lecture la plus rapide mais en lecture seul
            Me.ListFeatures.Items.Clear()
            'Me.ListFeatures.Text = "Select the Feature..."
            Dim MyConnexion As OleDbConnection = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data source=H:\TX\[TX] IHM\Reverse_Engineering_Application.NET\Test.accdb")
            Dim MyCommand As OleDbCommand = MyConnexion.CreateCommand()
            MyCommand.CommandText = "SELECT Features.Feature_Name FROM Features,Rules WHERE Features.Rule_Name = Rules.Rule_Name AND Rules.Manufacturing_Name ='" & Me.ListManufacturing.SelectedItem & "' AND Features.Rule_Name ='" & Me.ListRules.SelectedItem & "';"
            MyConnexion.Open()
            'ajout des résultats de la requête dans ListFeatures
            Dim MyReader As OleDbDataReader = MyCommand.ExecuteReader()
            Do While MyReader.Read()
                Me.ListFeatures.Items.Add(MyReader.GetString(0))
            Loop
            'fermeture du monopole de lecture
            MyReader.Close()
            MyConnexion.Close()
            'fermeture dès la fin de la lecture
            'Dim myReader As OleDbDataReader = Mycommand.ExecuteReader(CommandBehavior.CloseConnection)
     
        End Sub
    mais rien n'y fait, je dois sélectionner à nouveau l'item sélectionné au tout début de ListManufacturing (la première ListBox) pour que le contenu de ListFeatures apparaisse.

    -> Quelqu'un a une idée de la source du problème ?
    (je soupçonne ma requête SQL ou peut-être qu'il s'agit de l'évènement déclencheur...)

    -> Par ailleurs, est-il possible de ne pas avoir à me reconnecter à la base comme je le fais à chaque fois, c'est-à-dire de garder la connexion ?

    Merci beaucoup et bonne journée à tous !

  2. #2
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 30
    Points : 12
    Points
    12
    Par défaut
    Bonjour à tous,

    Toujours pas une petite idée ?

    Bonne journée.

  3. #3
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 30
    Points : 12
    Points
    12
    Par défaut
    Bonsoir,

    J'ai beau creuser, je ne vois pas ce qui provoque cette anomalie, est-ce que quelqu'un pourrait venir à mon secours ?

    Bonne soirée.

  4. #4
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 30
    Points : 12
    Points
    12
    Par défaut
    Bonsoir à tous,

    J'ai beau passer par ".SelectedIndexChanged" ou bien ".SelectedValueChanged", rien n'y fait.

    Par ailleurs, j'ai remarqué une seconde anomalie :
    Si je sélectionne un Item de la première ListBox et que je "navigue" dans les suivantes puis que je sélectionne un autre Item de cette première ListBox et que je navigue à nouveau dans les suivantes et qu'enfin je souhaite sélectionner finalement le premier Item, le contenu des suivantes n'est plus du tout mis à jour, pourtant, la valeur de l'index sélectionné change à chaque fois, d'où cela peut-il donc provenir à votre avis ?

    J'avoue sècher complètement, j'ai beau chercher dans le FAQ VB.NET et sur Internet, je ne trouve pas d'éléments de réponse quant à mes soucis de ListBox en cascade. Est-ce qu'au moins ma méthodologie est correcte ?

    D'avance merci beaucoup et bonne nuit !

  5. #5
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 30
    Points : 12
    Points
    12
    Par défaut
    Quel boulet ! je viens de parcourir à nouveau tout mon code et je viens de m'apercevoir que j'utilisais ADODB pour remplir la première ListBox (ListManufacturing) et que je passais par une autre méthode pour les deux autres.

    En harmonisant tout cela, je n'ai plus aucun soucis, ou comment perdre deux semaines bêtement, c'est comme cela que l'on apprend...

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

Discussions similaires

  1. [WD17] Probléme d'affichage d'une info ajouter à une table
    Par bestmoroco dans le forum WinDev
    Réponses: 1
    Dernier message: 24/02/2014, 00h00
  2. Réponses: 0
    Dernier message: 29/04/2009, 02h03
  3. Réponses: 6
    Dernier message: 12/10/2008, 20h03
  4. [VBA-E] Tableau Croise Dynamique données dans table access
    Par winner103 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/11/2006, 11h49
  5. [VBA-E]Export données dans table Access
    Par lolo_bob2 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 11/04/2006, 09h56

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