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 :

[VB.Net] Comment récupérer dans un textbox une donnée BDD ?


Sujet :

Accès aux données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 29
    Points : 16
    Points
    16
    Par défaut [VB.Net] Comment récupérer dans un textbox une donnée BDD ?
    Bonjour,

    Je débute en vb.net (j'apprends sur le tas dans le cadre du stage) et c'est vraiment galère. De toutes les infos que j'ai trouvées, rien ne fonctionne ...

    J'explique : je suis connectée à une base access (connexion ok pas de problème), je fais un ExecuteReader (qui passe bien à priori) et je voudrais afficher la valeur lue dans 1 textbox, sachant que je ne récupère qu'une et une seule valeur.

    Quelqu'un pourrait-il m'aider car je desespère ...
    Merci pour votre aide, à bientôt

  2. #2
    Membre chevronné Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Points : 2 145
    Points
    2 145
    Par défaut
    Tu as pensé à lire ton sql reader ?
    tu dois avoir quelque chose dans le genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SqlDataReader Reader = command.executeReader();
    Reader.Read();
    //et enfin
    Reader.GetInt32(0);
    Reader.GetValue(0);
    //etc.....
    Alexandre Chemla - Consultant MS BI chez Masao

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    Voilà mon code :

    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
    29
    30
    31
     
     
    Try
      maConnexion.ouvrir()
     
      Dim req_select As String = "select " + laTable + "." + leChamp + " from "
     + laTable + " where " + clause_where + "'" + laTextBox + "'"
     
      Dim myCommand As New OleDb.OleDbCommand(req_select)
     
      Dim myReader As OleDb.OleDbDataReader
      myReader = myCommand.ExecuteReader
     
      If myReader.HasRows Then
     
       While myReader.Read()
         projet.TextBox_num_proj_modif.Text = myReader.GetString(5)
       End While
     
      Else
        MsgBox("ElseError : Aucune donnée trouvée.")
     
      End If
     
    Catch ex As Exception
       MsgBox(ex.Message)
     
    Finally
      maConnexion.fermer()
     
    End Try
    toutefois je me demande si il n'y a pas un problème ailleurs car maintenant j'ai un message d'erreur m'informant que la propriété connection n'a pas été initialisée alors que je n'y ai pas touché ... et que tout passait bien jusque là.

    vraiment pas facile le vb .... ;-)

  4. #4
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    peux-tu nous donner le message d'exception exact stp, je subodore que celà vient de tes méthodes maConnexion.ouvrir() et maConnexion.fermer()
    Fait un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    '...
    Catch ex As Exception
       MsgBox(ex.ToString())
    Finally
      ' ici liberer non seulement la connection mais avant également le DataReader 
    '...
    pour celà il faut faire ton bloc des déclarations avant le bloc try/catch
    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
    Dim req_select As String = "select " + laTable + "." + leChamp + " from "
    + laTable + " where " + clause_where + "'" + laTextBox + "'"
    Dim myCommand As OleDb.OleDbCommand = Nothing
    Dim myReader As OleDb.OleDbDataReader = Nothing
     
    Try  
    myCommand = New OleDb.OleDbCommand(req_select,maConnexion)
      maConnexion.ouvrir()
      myReader = myCommand.ExecuteReader()
     
      If myReader.HasRows Then
       ' si tu es sûr de ne recevoir qu'une seule valeur, celà doit suffire
       projet.TextBox_num_proj_modif.Text = myReader.GetString(5) 
      Else : MsgBox("Aucune donnée trouvée.") 
      End If
    '...
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    merci pour la réponse

    je ne peux pas libérer le reader dans le finally car il me dit qu'il est pas déclaré mais ça passe après le while.

    oups j'avais oublié une ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim myCommand As New OleDb.OleDbCommand(req_select)
    myCommand.Connection = maConnexion
    je suis sûre qu'il n'y a qu'une valeur retournée

    les méthodes ouvrir() et fermer() fonctionnent bien, je les ai testé sur autre chose et j'ai pas de problème, par contre je doute quand au bon fonctionnement de la prog objet ...

    j'ai fait les petites modif, la seule erreur est un problème de syntaxe dans ma requète

    mais je n'arrive toujours pas à récupérer dans la textbox :-(

  6. #6
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par zzzmoi
    ..je ne peux pas libérer le reader dans le finally car il me dit qu'il est pas déclaré ..
    Ben oui si tu n'as pas fait tes déclarations en dehors du catch comme je te l'ai montré

    Citation Envoyé par zzzmoi
    .. .les méthodes ouvrir() et fermer() fonctionnent bien, je les ai testé sur autre chose et j'ai pas de problème..
    Si tu le dis , cependant je persiste à dire qu'elle sont inutiles puisque les méthodes Open et Close sont natives pour les objets Connection

    Citation Envoyé par zzzmoi
    .. par contre je doute quand au bon fonctionnement de la prog objet ..
    çà c'est la meilleure de l'année

    Allez montre moi ces fameuse méthodes qui fonctionnent "ailleurs" mais peut être pas
    Bon tu nous montres le message d'exception exact
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    Pour gérer les connexions :

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    Option Explicit On
    Option Strict On
    Imports Microsoft.VisualBasic
    Imports System.Data.OleDb
     
    Public Class se_connecter
     
        'déf de la connexion
        Dim connectString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data
     Source=C:\...\ma_base.mdb" 'chemin modifié volontairement
        Dim connexBD As New OleDb.OleDbConnection(connectString)
     
        Public Sub ouvrir()
     
            Try
                'ouverture de connexion
                connexBD.Open()
                MsgBox("connecté")
     
            Catch ex As OleDb.OleDbException
                MsgBox("Connexion impossible." + ex.Message)
            End Try
     
        End Sub
     
        Public Sub fermer()
     
            Try
                'fermeture de connexion
                connexBD.Close()
                MsgBox("déconnecté")
     
            Catch ex As OleDb.OleDbException
                MsgBox("Déconnexion impossible." + ex.Message)
                Application.Exit()
            End Try
     
        End Sub
    End Class

    Pour les requetes :
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
     
    Imports System
    Imports System.Data
    Imports System.Windows.Forms
    Imports Microsoft.VisualBasic
    Imports mon_projet.se_connecter
     
     
    Public Class requetes
     
        Dim laTable As String
        Dim leChamp As String
        Dim clause_where As String
        Dim laTextBox As String
     
        '-------------------------------------------------------------
        'effectue les SELECT sur la BD
        'reçoit en paramètres le nom de la table,
        ' le nom du champ à sélectionner et la clause WHERE (et valeur)
     
        Public Sub selectionner(ByVal table As String, _
        ByVal champ As String, ByVal where As String, _
        ByVal myTextBox As String)
     
            laTable = table
            leChamp = champ
            clause_where = where
            laTextBox = myTextBox
     
            Dim maConnexion As New se_connecter
            Dim connectString As String =
     "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\...\ma_base.mdb"
     'chemin modifié volontairement
            'Dim maConnexion As New OleDb.OleDbConnection(connectString)
     
            Dim myCommand As OleDb.OleDbCommand = Nothing
            Dim myReader As OleDb.OleDbDataReader = Nothing
     
            Try
     
                'ouverture de connexion BD
                maConnexion.ouvrir()
                'maConnexion.Open()
     
                'initialisation de la requète
                Dim req_select As String = "select " + laTable + "." + leChamp + "
     from " + laTable + " where " + clause_where + "'" + laTextBox + "'"
                'Dim req_select As String = "select PROJET.* from PROJET where
     PROJET.projet_num = '" + appel_modif.TextBox_num_modif.Text + "'"
     
                myCommand = New OleDb.OleDbCommand(req_select)
                myCommand.Connection = maConnexion
     
     
                'déf du lecteur
                MsgBox("avt reader")
                'Dim myReader As OleDb.OleDbDataReader
                MsgBox("ap initialisation reader / avt execute")
                myReader = myCommand.ExecuteReader
                MsgBox("ap ExecuteReader")
     
                'récup des données
                If myReader.HasRows Then
                    MsgBox("ap If myReader")
     
                    While myReader.Read()
     
                     MsgBox("ap While myReader")
     
                     'affichage des données dans textBox
                     projet.TextBox_num_proj_modif.Text = myReader.GetString(5)
     
                     MsgBox("ap laNewTextBox")
     
                    End While
                    MsgBox("ap End While")
     
                    myReader.Close()
                    MsgBox("myReader fermé")
                Else
                    MsgBox("ElseError : Aucune donnée trouvée.")
     
                End If
     
            Catch ex As Exception
                'pas de données trouvées dans la base ou erreur de saisie
                MsgBox("Impossible d'exécuter votre demande. " +
     ex.Message.ToString)
     
            Finally
     
                'fermeture connexion BD
                maConnexion.fermer()
                'maConnexion.Close()
     
            End Try
        End Sub
    End Class
    -----------------------------------

    Désolée pour la longueur et pour tous les MsgBox mais ça me permet de savoir où ça bug (et oui les débutants ... )

    Effectivement, quand je repasse la connexion par open / close sans faire appel à ma classe se_connecter, ça marche
    Le message d'erreur était : "la propriété Connection n'a pas été initialisée" mais je ne l'ai plus avec les open/close

    Quand je mets la requète "en dur", je passe tout sauf le "if myReader.HasRows", quand je prends celle avec paramètres, j'ai un problème de syntaxe. A force de chercher à résoudre ce problème je finis par ne plus savoir quoi chercher ...

    encore merci pour l'aide

  8. #8
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par zzzmoi
    Le message d'erreur était : "la propriété Connection n'a pas été initialisée" mais je ne l'ai plus avec les open/close...
    surtout depuis que tu as rajouté l'assignation de la propriété Connection de ton OleDb.OleDbCommand
    Bon, si je peux me permettre, laisses vraiment tomber cette classe _seconnecter en l'état, elle ne t'apporte vraiment rien puisque tout va mieux sans elle. En fait, pour le mieux, si tu as du temps, il faudrait developper un vrai composant d'accès aux données, il y a quelques exemples dans ce forum et dans nos articles
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    ok je vais potasser le forum et les articles
    et si je trouve vraiment pas, ben je reviendrai

    encore merci pour tout et bonne fin de journée !

  10. #10
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Considérons donc ceci comme , ce sont de nouvelles questions qui surgiront certainement
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  11. #11
    Membre à l'essai
    Profil pro
    dyiiythj
    Inscrit en
    Octobre 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : dyiiythj

    Informations forums :
    Inscription : Octobre 2006
    Messages : 27
    Points : 14
    Points
    14
    Par défaut
    pourkoi vous metterez ici myReader.GetString(5) pourkoi le numero 5 ?

    et si jai bcp de champ ( id,nom ,prenom)

    comment je dois indiquer chaque champ a son text box?

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 13/02/2018, 14h47
  2. [VB.Net] Comment récupérer les proprietes d'une image ?
    Par Cirdan Telemnar dans le forum VB.NET
    Réponses: 2
    Dernier message: 29/06/2006, 16h15
  3. Réponses: 1
    Dernier message: 05/05/2006, 14h37
  4. [ADO.Net][C#] Comment récupérer des infos d'une table SQL ?
    Par lamojuli dans le forum Accès aux données
    Réponses: 2
    Dernier message: 11/01/2006, 16h00
  5. Réponses: 2
    Dernier message: 18/07/2005, 14h06

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