none
ExecuteNonQuery : La propriété connection n'a pas été initialisée RRS feed

  • Discussion générale

  • Bonjour

    Je tombe sur un problème curieux que je n'arrive pas à résoudre. Ce qui est curieux, c'est que mon application a marché pendant plusieurs années, sans problème. J'ai voulu l'améliorer il y a quelques temps et le présent problème est apparu alors que je n'avais probablement pas changé grand chose ! (Ou plus exactement, je ne me souviens plus de ce que j'ai changé, mais c'était vraiment mineur).

    Voici le problème :

    Lorsque je clique sur le mot du menu "confirmer", ce qui doit normalement soit exécuter des modifications sur une ligne dans une table, soit supprimer un enregistrement, soit en ajouter un, je reçois sur le message suivant : "ExecuteNonQuery : La propriété connection n'a pas été initialisée". 

    Voici le code où se produit l'erreur :

    Private Sub Confirmer()

    Call OuvrirConnexion() Select Case Nouveau Case False 'Simple modification AncienLibellé = BoxLibellé.Text AnciennesDonnées = TexteRTF.Text 'Supprime l'enregistrement Commande.CommandText = "DELETE FROM Libellés WHERE Numéro = " & CType(Numéro.Text, Integer) Try Commande.ExecuteNonQuery() Catch ex As Exception If ex.Message IsNot Nothing Then MsgBox("Nouveau = False " & (Chr(13)) & "Supprime l'enregistrement " & (Chr(13)) & (Chr(13)) & ex.Message) Connexion.Close() Exit Sub End If End Try 'Crée un nouvel enregistrement Commande.CommandText = "INSERT INTO Libellés (Libellé, Données) VALUES (""" & AncienLibellé & """, """ & AnciennesDonnées & """)" Try Commande.ExecuteNonQuery() Catch ex As Exception If ex.Message IsNot Nothing Then MsgBox("Nouveau = False " & (Chr(13)) & "Nouvel enregistrement " & (Chr(13)) & (Chr(13)) & ex.Message) Connexion.Close() Exit Sub End If End Try My.Computer.Audio.Play("Ding.wav", AudioPlayMode.Background) Case True 'Nouvel enregistrement Commande.CommandText = "INSERT INTO Libellés (Libellé, Données) VALUES (""" & BoxLibellé.Text & """, """ & TexteRTF.Text & """)" Try Commande.ExecuteNonQuery() Catch ex As Exception If ex.Message IsNot Nothing Then MsgBox("Nouveau = True " & (Chr(13)) & "Nouvel enregistrement " & (Chr(13)) & (Chr(13)) & ex.Message) Connexion.Close() Exit Sub End If End Try My.Computer.Audio.Play("Nouveau.wav", AudioPlayMode.Background) End Select LibellésDataGridView.Refresh() Nouveau = False Connexion.Close()

    End Sub

    Les variables ont été définies par ailleurs, et j'ai ajouté au message d'erreur "ex" deux lignes destinées à indiquer où se situe exactement l'apparition de l'erreur.

    Voici le code correspondant à la routine "OuvrirConnexion()"

    Private Sub OuvrirConnexion()
            NomdeBase = "PBCodes.mdb"
            strConn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source= " & NomdeBase & " ;"
            strSql = "SELECT * FROM Libellés ORDER BY Libellé"
            Connexion = New OleDbConnection()
            Connexion.ConnectionString = strConn
            Connexion.Open()
            Label1.Text = Connexion.DataSource.ToString
            Commande = New OleDbCommand(strSql)
    End Sub

    (Même remarque que précédemment pour les variables).

    J'ai trouvé quelques pistes dans différents forums, mais je n'ai rien compris aux explications données par les "experts". Je m'adresse donc aux vrais experts.

    Pouvez-vous m'aider s'il vous plait ?


    Pierre Allemand

    jeudi 26 avril 2018 22:35