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

Windows Forms Discussion :

probléme dans une fonction qui retourne un data reader


Sujet :

Windows Forms

  1. #1
    Membre du Club Avatar de saraenim
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 83
    Points : 59
    Points
    59
    Par défaut probléme dans une fonction qui retourne un data reader
    salut,
    j'ai fait une fonction qui doit retourner un data reader
    voila son 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
    32
    33
    34
    35
    36
    37
    38
    39
     
    Imports System.Data.SqlClient
    Imports System.Net
     
     
    <System.Serializable()> Public Class connection
     
        Implements acces_connection.interface_connection
    Private requete As String
     
        Dim con As New connection ' classe
        Dim inter As acces_connection.interface_connection ' interface
     
    Private Function modification(ByRef requete As String) As SqlDataReader Implements acces_connection.interface_connection.modification
     
            Try
                con = inter
                ' creer un objet  sql command pour communiquer avec la base de données
                Dim command As SqlClient.SqlCommand = New SqlClient.SqlCommand(requete, connection)
                'creer un objet  sql data reader pour exécuter puis afficher le resultat
     
                Dim reader1 As SqlClient.SqlDataReader = command.ExecuteReader()
     
                While reader1.Read
     
                    Return (reader1)
     
                End While
     
     
     
            Catch ex As Exception
     
                MsgBox("demande non traité", MsgBoxStyle.Exclamation)
     
            End Try
     
        End Function
    End Class
    mais lors de la compilation on m'affiche l'erreur suivante:
    la fonction ne retourne pas une valeur pour tous les chemin du code, une exeption de référence null peux se produire lorsque le resultat sera utilisé.
    je sais pas c'est quoi ma faute
    svp aidez moi c'est urgent
    Merci

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 754
    Points
    39 754
    Par défaut
    Ca veut dire que tous les déroulements possibles du code doivent au final renvoyer une valeur, ou lever une exception. Dans ton code, si une exception se produit, l'exécution va passer dans le bloc catch, dans lequel aucune valeur n'est renvoyée... Donc dans ton catch, soit tu rajoutes une instruction Return avec une valeur bidon (Nothing par exemple), soit tu transmets l'exception à la méthode appelante avec l'instruction Throw

  3. #3
    Membre du Club Avatar de saraenim
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 83
    Points : 59
    Points
    59
    Par défaut
    merci pour la réponse
    je vais essayer avec la premiére solution que tu m'a propsé
    please, tu peux m'expliquer d'avantage c'est quoi le throw ( cad ta deuxiéme proposition) car je suis encore débutante en vb.net
    thanks

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 754
    Points
    39 754
    Par défaut
    Ca renvoie l'exception interceptée dans le Try/Catch à la méthode appelante, qui pourra elle-même l'intercepter (ou non...)
    http://msdn2.microsoft.com/fr-fr/library/ty79csek.aspx

  5. #5
    Membre du Club Avatar de saraenim
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 83
    Points : 59
    Points
    59
    Par défaut
    Merci pour le lien

  6. #6
    En attente de confirmation mail
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Points : 669
    Points
    669
    Par défaut
    Citation Envoyé par saraenim Voir le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
                While reader1.Read
     
                    Return (reader1)
     
                End While
    Le problème vient plutot de ceci
    Si "reader.Read" renvoi False (en fait, s'il n'y a pas de ligne), tu n'entre pas dans la boucle While donc tu ne retourne rien

    Essaye plutot ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        ' Il n'y a pas de lignes
        If Not reader1.HasRows Then Return Nothing
     
        ' Lecture de la 1ère ligne. Pourquoi ici ?
        reader1.Read
     
        ' Retourne le DataReader
        Return (reader1)
    Personnellement, je ne vois pas l'utilité de mettre un bloc Try/Catch ici.
    Je le mettrais plutot au niveau de l'appel de la fonction. (C'est un avis personnel)

    Sinon (je peux pas m'en empêcher...), il y a quand même quelques trucs qui m'intriguent dans ta classe.

    - L'attribut serializable
    - L'interface
    - Une variable 'requete' declarée en private dans ta classe et un paramètre qui porte le même nom... (Normalement, la paramètre est prioritaire, mais bon, c'est un peu jouer avec le feu)
    - Le paramètre 'Requete' passé en Byref...

    Voilà, désolé, c'est plus fort que moi....

  7. #7
    Membre du Club Avatar de saraenim
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 83
    Points : 59
    Points
    59
    Par défaut

    merci pour ton conseil, personellement j'avoue que mon code est un peu tiré par les cheveux
    je vais appliqué tes suggestions et j'espére qu'ils me aideront à trouver une solution

  8. #8
    Membre du Club Avatar de saraenim
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 83
    Points : 59
    Points
    59
    Par défaut
    salut, j'ai essayé les 3 solutions que vous m'avez donnez mais
    j'ai même retappé le code et changé ce qu'il faut
    SVP aidez moi car je tourne en rond depuis 1semaine et la date limite du remise du projet approche

    Merci d'avance

  9. #9
    En attente de confirmation mail
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Points : 669
    Points
    669
    Par défaut
    Montre nous ce que tu as modifié ...

  10. #10
    Membre du Club Avatar de saraenim
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 83
    Points : 59
    Points
    59
    Par défaut
    NB : les codes sot un peux long donc dzl si ça va vous embéter un peux

    bon je vaiste monter mon tout premier code ( il était en architecture centraisé)


    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
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
     
    Imports accées_métier
     
    Public Class Gestion_comptes
        Dim a As accées_métier.admin
     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Try
                'Chaîne de connexion
                Dim connectString As String = "Data Source=SARA\GMAO;Initial Catalog=GMAO;User ID=sa; password = 21009324"
                'Objet connection
                Dim connection As SqlClient.SqlConnection = New SqlClient.SqlConnection(connectString)
                'Ouverture
                connection.Open()
                Dim command As SqlClient.SqlCommand = New SqlClient.SqlCommand("SELECT nom,service,login,mdp,tel,fax,email FROM administrateur where id_admin ='" & TextBox1.Text & "'", connection)
                Dim reader As SqlClient.SqlDataReader = command.ExecuteReader
     
                While reader.Read
     
     
                    TextBox2.Text = reader.GetString(0)
                    TextBox3.Text = reader.GetString(1)
                    TextBox4.Text = reader.GetString(2)
                    TextBox5.Text = reader.GetString(3)
                    TextBox6.Text = reader.GetInt32(4)
                    TextBox7.Text = reader.GetInt32(5)
                    TextBox8.Text = reader.GetString(6)
     
     
                End While
     
                MsgBox("id_administrateur introuvable", MsgBoxStyle.Exclamation)
                reader.Close()
     
                '-------------------------------------------------------------------------------------
     
                ' Fermeture()
     
            Catch ex As Exception
                System.Diagnostics.Debug.WriteLine("erreur")
            End Try
     
     
        End Sub
     
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            Try
                'Chaîne de connexion
                Dim connectString As String = "Data Source=SARA\GMAO;Initial Catalog=GMAO;User ID=sa; password = 21009324"
                'Objet connection
                Dim connection As SqlClient.SqlConnection = New SqlClient.SqlConnection(connectString)
     
                '--------------------------------------------------------------------------------------
                'Ouverture
                connection.Open()
                '--------------------------------------------------------------------------------------
     
                Dim strRequete As String = "INSERT INTO administrateur VALUES ('" & TextBox9.Text & " ',' " & TextBox10.Text & " ' , ' " & TextBox11.Text & " ' ,' " & TextBox12.Text & " ' , ' " & TextBox13.Text & " ', " & TextBox14.Text & ", " & TextBox15.Text & ", ' " & TextBox16.Text & " ' )"
                Dim Command As New SqlClient.SqlCommand(strRequete, connection)
     
                Dim affectedrows As Integer = Command.ExecuteNonQuery()
                MsgBox("Nombre de lignes affectées {0}", affectedrows)
     
                'Fermeture
                connection.Close()
            Catch ex As Exception
                MsgBox("données non ajoutées", MsgBoxStyle.Critical)
            End Try
     
        End Sub
     
        Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
            Try
                'Chaîne de connexion
                Dim connectString As String = "Data Source=SARA\GMAO;Initial Catalog=GMAO;User ID=sa; password = 21009324"
                'Objet connection
                Dim connection As SqlClient.SqlConnection = New SqlClient.SqlConnection(connectString)
     
                '--------------------------------------------------------------------------------------
                'Ouverture
                connection.Open()
                '--------------------------------------------------------------------------------------
     
                Dim command As SqlClient.SqlCommand = New SqlClient.SqlCommand("SELECT nom,service,login,mdp,tel,fax,email FROM administrateur where id_admin ='" & TextBox17.Text & "'", connection)
                Dim reader As SqlClient.SqlDataReader = command.ExecuteReader
                If reader.Read Then
     
                    TextBox18.Text = reader.GetString(0)
                    TextBox19.Text = reader.GetString(1)
                    TextBox20.Text = reader.GetString(2)
                    TextBox21.Text = reader.GetString(3)
                    TextBox22.Text = reader.GetInt32(4)
                    TextBox23.Text = reader.GetInt32(5)
                    TextBox24.Text = reader.GetString(6)
                Else
                    MsgBox("id_administrateur introuvable", MsgBoxStyle.Exclamation)
     
     
                End If
                reader.Close()
     
                '-------------------------------------------------------------------------------------
                'Fermeture
                connection.Close()
            Catch ex As Exception
                System.Diagnostics.Debug.WriteLine("erreur")
            End Try
     
     
        End Sub
     
        Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
            Try
                'Chaîne de connexion
                Dim connectString As String = "Data Source=SARA\GMAO;Initial Catalog=GMAO;User ID=sa; password = 21009324"
                'Objet connection
                Dim connection As SqlClient.SqlConnection = New SqlClient.SqlConnection(connectString)
     
                '--------------------------------------------------------------------------------------
                'Ouverture
                connection.Open()
                '--------------------------------------------------------------------------------------
     
                Dim command As SqlClient.SqlCommand = New SqlClient.SqlCommand("UPDATE administrateur SET  nom = '" & TextBox31.Text & "',service='" & TextBox30.Text & "' ,login='" & TextBox29.Text & "' ,mdp='" & TextBox28.Text & "' ,tel=" & TextBox27.Text & " ,fax= " & TextBox26.Text & ",email= '" & TextBox25.Text & "' where id_admin ='" & TextBox17.Text & "' ", connection)
                Dim reader As SqlClient.SqlDataReader = command.ExecuteReader
                MsgBox(" la modification a été effectuée", MsgBoxStyle.OkOnly)
                'Fermeture
                connection.Close()
            Catch ex As Exception
                MsgBox(" la modification n'a pas été efectuée", MsgBoxStyle.Information)
            End Try
     
     
        End Sub
     
        Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
            Try
                'Chaîne de connexion
                Dim connectString As String = "Data Source=SARA\GMAO;Initial Catalog=GMAO;User ID=sa; password = 21009324"
                'Objet connection
                Dim connection As SqlClient.SqlConnection = New SqlClient.SqlConnection(connectString)
     
                '--------------------------------------------------------------------------------------
                'Ouverture
                connection.Open()
                '--------------------------------------------------------------------------------------
     
                Dim command As SqlClient.SqlCommand = New SqlClient.SqlCommand("DELETE FROM administrateur where id_admin ='" & TextBox33.Text & "' ", connection)
                Dim reader As SqlClient.SqlDataReader = command.ExecuteReader
     
                'Fermeture
                connection.Close()
            Catch ex As Exception
                System.Diagnostics.Debug.WriteLine("erreur")
            End Try
     
        End Sub
    End Class
    puis le l'ai transformé en architecture distribué ( 3tiers ) avec deux interfaces l'une à la Base de données et l'autre pour le serveur ( c'était exigé selon u cahier de charge)

    voila le code de l'interface BD:
    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
     
    Imports System.Data.SqlClient
    Public Interface interface_connection
     
     
     
        '*********************************************************************
        'procedure de connection à la base de données
        Sub connect()
     
        '*********************************************************************
        ' procedure de deconnection de la base de données
        Sub disconnect()
     
        '*********************************************************************
        ' procedure qui permet soit la consultation, modification ou la suppression des attributs d'une table de la BD
        Function modification(ByVal requete As String) As SqlDataReader
     
        '*********************************************************************
        'procedure qui permet l'insertion d'une line dans une table de la BD
        Function inserer(ByVal requete As String) As Int32
     
     
    End Interface
    le code de l'interface du serveur
    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
     
    Public Interface admin
     
     
        '*********************************************************************************
        ' function d'affichage de l'id admin
        Function get_id_admin() As String
     
        '*********************************************************************
        'fonction d'affichage du nom de l'admin
        Function get_nom() As String
     
        '*********************************************************************
        'procedure de modification du nom de l'admin
        Sub set_nom(ByVal a As String)
     
        '*********************************************************************
        'function d'affichage du service
        Function get_service() As String
     
        '*********************************************************************
        'procedure de modification du service de l'admin
        Sub set_service(ByVal b As String)
     
        '*********************************************************************
        'function d'affichage du login
        Function get_login() As String
     
     
        '*********************************************************************
        'procedure de modification du login de l'admin
        Sub set_login(ByVal c As String)
     
        '*********************************************************************
        'function d'affichage du mot de passe
        Function get_mdp() As String
     
        '*********************************************************************
        'procedure de modification du mdp de l'admin
        Sub set_mdp(ByVal d As String)
     
        '*********************************************************************
        'function d'affichage du telephone de l'admin
        Function get_tel() As Int32
     
        '*********************************************************************
        'procedure de modification du telepone de l'admin
        Sub set_tel(ByVal e As Int32)
     
        '*********************************************************************
        'function d'affichage du fax de l'admin
        Function get_fax() As Int32
     
        '*********************************************************************
        'procedure de modification du fax de l'admin
        Sub set_fax(ByVal f As String)
     
        '*********************************************************************
        'function d'affichage du email de l'admin
     
        Function get_email() As String
     
        '*********************************************************************
        'procedure de modification du email de l'admin
        Sub set_email(ByVal g As String)
     
        '*********************************************************************
        'procedure d'ajout d'un admin
        Function ajouter_admin(ByVal requete As String) As Int32
     
        '*********************************************************************
        'procedure de consultation d'un admin
        Function consulter_admin(ByRef requete As String) As SqlClient.SqlDataReader
     
        '*********************************************************************
        'procedure de modification des attributs d'un admin
        Function modifier_admin(ByVal requete As String) As Int32
     
        '*********************************************************************
        'procedure de suppression d'un admin
        Function supper_admin(ByVal requete As String) As SqlClient.SqlDataReader
    voila le serveur
    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
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
     
    Imports acces_connection
    Imports Connection
     
     
    Public Class administrateur
        Inherits MarshalByRefObject
     
     
        Implements accées_métier.admin
     
     
        '*********************************************************************
        Private id_admin As String
        Private nom As String
        Private service As String
        Private login As String
        Private mdp As String
        Private tel As Int32
        Private fax As Int32
        Private email As String
     
        'Chaîne de connexion
        Private connectString As String = "Data Source=SARA\GMAO;Initial Catalog=GMAO;User ID=sa; password = 21009324"
        'Objet connection
        Public connecxion As SqlClient.SqlConnection = New SqlClient.SqlConnection(connectString)
     
     
     
        Dim a As New Connection.connection
        Dim b As New Connection.connection
        Dim c As New Connection.connection
        Dim d As New Connection.connection
     
     
     
     
     
        '*********************************************************************
     
        Public Function get_id_admin() As String Implements accées_métier.admin.get_id_admin
     
            Return (id_admin)
     
        End Function
        '*********************************************************************
        '*********************************************************************
     
        Public Function get_nom() As String Implements accées_métier.admin.get_nom
     
            Return (nom)
     
        End Function
     
        Public Sub set_nom(ByVal a As String) Implements accées_métier.admin.set_nom
     
            nom = a
     
        End Sub
        '*********************************************************************
        '*********************************************************************
     
        Public Function get_service() As String Implements accées_métier.admin.get_service
     
            Return (service)
     
        End Function
     
        Public Sub set_service(ByVal b As String) Implements accées_métier.admin.set_service
     
            service = b
     
        End Sub
        '*********************************************************************
        '*********************************************************************
     
        Public Function get_login() As String Implements accées_métier.admin.get_login
     
            Return (login)
     
        End Function
     
        Public Sub set_login(ByVal c As String) Implements accées_métier.admin.set_login
     
            login = c
     
        End Sub
        '*********************************************************************
        '*********************************************************************
     
        Public Function get_mdp() As String Implements accées_métier.admin.get_mdp
     
            Return (mdp)
     
        End Function
     
        Public Sub set_mdp(ByVal d As String) Implements accées_métier.admin.set_mdp
     
            mdp = d
     
        End Sub
        '*********************************************************************
        '*********************************************************************
     
        Public Function get_tel() As Int32 Implements accées_métier.admin.get_tel
     
            Return (tel)
     
        End Function
     
        Public Sub set_tel(ByVal e As Int32) Implements accées_métier.admin.set_tel
     
            tel = e
     
        End Sub
        '*********************************************************************
        '*********************************************************************
     
        Public Function get_fax() As Int32 Implements accées_métier.admin.get_fax
     
            Return (fax)
     
        End Function
     
        Public Sub set_fax(ByVal f As String) Implements accées_métier.admin.set_fax
     
            fax = f
     
        End Sub
        '*********************************************************************
        '*********************************************************************
     
        Public Function get_email() As String Implements accées_métier.admin.get_email
     
            Return (email)
     
        End Function
     
        Public Sub set_email(ByVal g As String) Implements accées_métier.admin.set_email
     
            email = g
     
        End Sub
        '*********************************************************************
        Public Function ajouter_admin(ByVal requete As String) As Int32 Implements accées_métier.admin.ajouter_admin
     
            'a.connect()
            'a.inserer(requete)
            ' a.disconnect()
     
     
        End Function
        '*********************************************************************
        Public Function consulter_admin(ByRef requete As String) As SqlClient.SqlDataReader Implements accées_métier.admin.consulter_admin
     
     
     
            'b.connect()
            'b.modification(requete)
            'b.disconnect()
     
        End Function
     
        '*********************************************************************
        Public Function modifier_admin(ByVal requete As String) As Int32 Implements accées_métier.admin.modifier_admin
     
            'c.connect()
            'c.inserer(requete)
            'c.disconnect()
            '
        End Function
        '***'******************************************************************
        Public Function supper_admin(ByVal requete As String) As SqlClient.SqlDataReader Implements accées_métier.admin.supper_admin
     
            'd.connect()
            ' d.modification(requete)
            ' d.disconnect()
     
        End Function
    finallement voila la conection à la BD
    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
    99
    100
    101
    102
    103
     
    Imports System.Data.SqlClient
    Imports System.Net
     
     
    Public Class connection
     
        Implements acces_connection.interface_connection
     
     
        'Chaîne de connexion
        Private connectString As String = "Data Source=SARA\GMAO;Initial Catalog=GMAO;User ID=sa; password = 21009324"
        'Objet connection
        Public connecxion As SqlClient.SqlConnection = New SqlClient.SqlConnection(connectString)
     
     
     
        '*******************************************************************************************************
        'procédure de connection
        Public Sub connect() Implements acces_connection.interface_connection.connect
            Dim connectString As String = "Data Source=SARA\GMAO;Initial Catalog=GMAO;User ID=sa; password = 21009324"
            'Objet connection
            Dim connecxion As SqlClient.SqlConnection = New SqlClient.SqlConnection(connectString)
     
     
            Try
                'ouverture
                connecxion.Open()
     
            Catch ex As Exception
                MsgBox("tentative de connection échouée", MsgBoxStyle.Exclamation)
     
            End Try
     
        End Sub
        '*******************************************************************************************************
        'procédure de déconnection
        Public Sub disconnect() Implements acces_connection.interface_connection.disconnect
     
            Try
                'fermeture
                connecxion.Close()
     
            Catch ex As Exception
                MsgBox("connection encore ouverte", MsgBoxStyle.Exclamation)
     
            End Try
     
        End Sub
        '*******************************************************************************************************
        'procédure de consultation
        Public Function modification(ByVal requete As String) As SqlDataReader Implements acces_connection.interface_connection.modification
     
            Try
     
                ' creer un objet  sql command pour communiquer avec la base de données
                Dim command As SqlClient.SqlCommand = New SqlClient.SqlCommand(requete, connecxion)
                'creer un objet  sql data reader pour exécuter puis afficher le resultat
     
                Dim reader1 As SqlClient.SqlDataReader = command.ExecuteReader()
     
                ' Il n'y a pas de lignes
                If Not reader1.HasRows Then Return Nothing
     
                ' Lecture de la 1ère ligne. Pourquoi ici ?
                reader1.Read()
     
                ' Retourne le DataReader
                Return (reader1)
     
     
            Catch ex As Exception
                Return (Nothing)
     
                MsgBox("demande non traité", MsgBoxStyle.Exclamation)
     
            End Try
     
        End Function
     
     
        '*******************************************************************************************************
        Public Function inserer(ByVal requete As String) As Int32 Implements acces_connection.interface_connection.inserer
     
            Try
     
                ' creer un objet de type string pour déclarer la requéte à faire 
                Dim strRequete As String = requete
                ' creer un objet  sql command pour communiquer avec la base de données et exécuter la commande
                Dim Command As New SqlClient.SqlCommand(strRequete, connecxion)
                Command.ExecuteNonQuery()
                Return (Command.ExecuteNonQuery())
     
     
            Catch ex As Exception
                MsgBox("insertion non effectuée", MsgBoxStyle.Exclamation)
     
            End Try
     
        End Function
     
        '*******************************************************************************************************
    End Class
    apres tout ce code mon application coté client est de venu comme suit:
    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
     
    imports accées_métier
     
    Public Class Gestion_comptes
     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       Dim a As accées_métier.admin
    dim requete as string = "SELECT nom,service,login,mdp,tel,fax,email FROM administrateur where id_admin ='" & TextBox1.Text & "'"
     dim reader as SqlClient.SqlDataReader = 
     
     While reader.Read
     
     
            TextBox2.Text = reader.GetString(0)
            TextBox3.Text = reader.GetString(1)
            TextBox4.Text = reader.GetString(2)
            TextBox5.Text = reader.GetString(3)
            TextBox6.Text = reader.GetInt32(4)
            TextBox7.Text = reader.GetInt32(5)
            TextBox8.Text = reader.GetString(6)
     
     
            End While
     
            MsgBox("id_administrateur introuvable", MsgBoxStyle.Exclamation)
            reader.Close()
     
     
     
    end sub
    end class
    mais ça pas voulu marché
    j'ai essayé de faire autremant avec l'insertion mais ça n'a pas marché

    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
     
     Dim a As New Métier.administrateur
     Try
                a.connect()
                Dim requete As String = "INSERT INTO administrateur VALUES ('" & TextBox9.Text & " ',' " & TextBox10.Text & " ' , ' " & TextBox11.Text & " ' ,' " & TextBox12.Text & " ' , ' " & TextBox13.Text & " ', " & TextBox14.Text & ", " & TextBox15.Text & ", ' " & TextBox16.Text & " ' )"
     
                Dim affectedrows As Int32
     
                affectedrows = a.inserer(requete)
     
                MsgBox("Nombre de lignes affectées {0}", affectedrows)
     
     
     
            Catch ex As Exception
                MsgBox("données non ajoutées", MsgBoxStyle.Critical)
            End Try
    remarque j'ai mis toutes les procédures dans la classe métier.admin
    aussi il y'a rien
     
        End Sub
    Rq : j'ai changé l'interface admin ainsi que le serveur pour pouvoir faire cela

  11. #11
    En attente de confirmation mail
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Points : 669
    Points
    669
    Par défaut
    Je ne sais pas si tu parles toujours du problème initial ou pas.

    Si c'est le cas, la procédure modification que tu as modifié me semble correcte mis à part le détail suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
            Catch ex As Exception
                Return (Nothing)
     
                MsgBox("demande non traité", MsgBoxStyle.Exclamation)
     
            End Try
    Le return vient après le msgbox...
    Le return provoque une rupture automatiquement, donc ton msgbox ne sera jamais affiché

    Il faut écrire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
            Catch ex As Exception
     
                MsgBox("demande non traité", MsgBoxStyle.Exclamation)
     
     
               ' Rien à retourner
                Return Nothing
            End Try
    Tu peux tout aussi bien le mettre après l'exception

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
            Catch ex As Exception
     
                MsgBox("demande non traité", MsgBoxStyle.Exclamation)
     
            End Try
     
           ' Rien à retourner
            Return Nothing
    Maintenant, en regardant ta classe, on remarque qu'il y a la même chose à faire pour la méthode inserer...
    Comme Tomlev l'a dit plus haut, si tu decides de gérer les exceptions dans cette méthode, il faut qu'une fois l'exeception gérée, renvoyer une valeur et que retourne ta procédure en cas d'exception ?

    Petites remarques :

    1. Tu executes 2 fois ta requete dans la méthode inserer ... aie ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                
               Command.ExecuteNonQuery()
                Return (Command.ExecuteNonQuery())
    2. Attention au nommage de variables/méthodes/....
    Il existe des conventions de nommage que tu peux utiliser
    Exemple ici : http://plasserre.developpez.com/v5-210.htm
    (Perso, je n'utilise pas celle-ci, mais c'est pour te donner une idée)

  12. #12
    Membre du Club Avatar de saraenim
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 83
    Points : 59
    Points
    59
    Par défaut
    Merci infinément, j'avais peur que le code te semble un peu long et que tu me répond pas mais c'était pas le cas
    je vais essayer de recorriger mon programme une autre fois
    Merci une autre fois

  13. #13
    Membre du Club Avatar de saraenim
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 83
    Points : 59
    Points
    59
    Par défaut
    salut kelpan, l'applicaton ne tourne plus toujour
    quand j'exécute en mode pas à pas détaillé le programme s'arréte dans la partie du code : Command.ExecuteNonQuery() pour l'insertion
    et pour la consltation dans la fonction modification c'est en command.ExecuteReader()
    j'ai pensé que c'est à cause de a requéte je l'ai essayé directement dans le query analyzer de sql server elle marche
    je sais pas c'est quoi le probléme

  14. #14
    En attente de confirmation mail
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Points : 669
    Points
    669
    Par défaut
    Quel est le message d'exception ?

  15. #15
    Membre du Club Avatar de saraenim
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 83
    Points : 59
    Points
    59
    Par défaut
    Le message d'erreur retourné est celui que j'ai mis dans le catch de la fonction modification (idem pour inserer)
    RQ :j'ai mis les exeption en rouge
    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
        Public Function modification(ByVal requete As String) As SqlDataReader Implements acces_connection.interface_connection.modification
     
            Try
     
                ' creer un objet  sql command pour communiquer avec la base de données
                Dim command As SqlClient.SqlCommand = New SqlClient.SqlCommand(requete, connecxion)
                'creer un objet  sql data reader pour exécuter puis afficher le resultat
     
                Dim reader1 As SqlClient.SqlDataReader = command.ExecuteReader()
     
                ' Il n'y a pas de lignes
                If Not reader1.HasRows Then Return Nothing
     
                ' Lecture de la 1ère ligne. Pourquoi ici ?
                reader1.Read()
     
                ' Retourne le DataReader
                Return (reader1)
     
     
            Catch ex As Exception
          
                MsgBox("demande non traité", MsgBoxStyle.Exclamation)
            Return (Nothing)
    
            End Try
     
        End Function
     
     
        '*******************************************************************************************************
        Public Function inserer(ByVal requete As String) As Int32 Implements acces_connection.interface_connection.inserer
     
            Try
     
                ' creer un objet de type string pour déclarer la requéte à faire 
                Dim strRequete As String = requete
                ' creer un objet  sql command pour communiquer avec la base de données et exécuter la commande
                Dim Command As New SqlClient.SqlCommand(strRequete, connecxion)
              
                Return (Command.ExecuteNonQuery())
     
     
            Catch ex As Exception
                MsgBox("insertion non effectuée", MsgBoxStyle.Exclamation)       Return (Nothing)
           
            End Try
     
        End Function

  16. #16
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 754
    Points
    39 754
    Par défaut
    Oui mais ça ne donne aucune indication sur l'exception qui s'est produite, ça dit seulement qu'il y a eu une erreur... Il faut que tu affiches le détail de l'exception, au moins le message :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox("insertion non effectuée : " & ex.Message, MsgBoxStyle.Exclamation)

  17. #17
    Membre du Club Avatar de saraenim
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 83
    Points : 59
    Points
    59
    Par défaut
    voila le message retourné :
    system.invalid opération exception s'est produite dans system.data.dll

  18. #18
    En attente de confirmation mail
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Points : 669
    Points
    669
    Par défaut
    Oui, c'est pas suffisant.

    Cela peut venir de la requete.
    Donnes-nous la requête au moment de l'exception.

  19. #19
    Membre du Club Avatar de saraenim
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 83
    Points : 59
    Points
    59
    Par défaut
    j'ai pas bien compri ta question mais si tu parle de la requete SQL que je veux exécuter la voila:
    SELECT nom,service,login,mdp,tel,fax,email FROM administrateur where id_admin ='" & TextBox1.Text & "' '
    j'ai exécuté la requéte directement sur sql server 2000 ( dans le query analyzer ) et ça marché
    Merci pour vore collaboration et votre aide

  20. #20
    En attente de confirmation mail
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Points : 669
    Points
    669
    Par défaut
    Citation Envoyé par saraenim Voir le message
    j'ai pas bien compri ta question mais si tu parle de la requete SQL que je veux exécuter la voila:
    SELECT nom,service,login,mdp,tel,fax,email FROM administrateur where id_admin ='" & TextBox1.Text & "' '
    j'ai exécuté la requéte directement sur sql server 2000 ( dans le query analyzer ) et ça marché
    Merci pour vore collaboration et votre aide
    Ca, c'est une requête de selection pas d'insertion !!??

    Dans le catch de ta méthode inserer, ajoutes ceci au tout début

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Debug.WriteLine("Requete insertion : " & strRequete)
    Ensuite, lorsque tu as l'erreur, tu va dans la fenêtre "Sortie" de ton intégré et tu cherches la ligne avec "Requete insertion : ..."

    C'est ça que je veux voir...
    (Tu peux en profiter pour jeter un coup d'oeil de ton coté, va falloir te mettre au débogage, à un moment ou un autre)

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/07/2010, 21h58
  2. [PHP 5.0] Creer une fonction qui retourne une variable dans le script
    Par keaton7 dans le forum Langage
    Réponses: 8
    Dernier message: 10/02/2009, 14h09
  3. Réponses: 11
    Dernier message: 21/03/2008, 12h24
  4. Réponses: 7
    Dernier message: 03/12/2004, 12h40
  5. Réponses: 14
    Dernier message: 09/04/2004, 13h44

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