La référence d'objet n'est pas définie à une instance d'un objet

bonjour,

je développe une application sur la VB.net et j'utilise la technologie ADO( le mode deconnecté) et j'ai rencontré un problème : "la référence d'objet n'est pas définie à une instance d'un objet"

voilà le code que j'ai ecrit:

Imports System.Data.SqlClient
Public Class Form1
Dim con As New SqlConnection("DATA Source=.\sqlexpress;Initial Catalog=test;Integrated Security=True")
Dim ds As New DataSet("test")
Dim da As New SqlDataAdapter

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If con.State = ConnectionState.Closed Then
con.Open()
End If

da.SelectCommand = New SqlCommand("Select * From client")
da.SelectCommand.Connection = con
da.MissingSchemaAction = MissingSchemaAction.AddWithKey

End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

ds.Tables("client").Rows.Add(TextBox1.Text.ToString, TextBox2.Text)

End Sub

le message s'affiche au niveau de ce ligne là:
--->> ds.Tables("client").Rows.Add(TextBox1.Text.ToString, TextBox2.Text)

Merci d'avance pour votre aide :)

3 réponses

  1. Bonjour,

    --->> ds.Tables("client").Rows.Add(TextBox1.Text.ToString, TextBox2.Text)

    Il te faut tenir comptes des sous objets te ton objet de niveau 1

    Tu défini :

    Dim ds As New DataSet("test")

    donc ds.tables("client") n'exite pas.

    en te référant à l'exemple ici :
    https://plasserre.developpez.com/cours/vb-net/?page=bases-donnees2#LXVII-F-2

    J'ai supprimer les commentaires, mais c'est le principe.

    Private ObjetDataSet As New DataSet
    Private ObjetDataTable As New DataTable
    ObjetCommand = New OleDbCommand(strSql)
    ObjetDataAdapter = New OleDbDataAdapter(ObjetCommand)
    ObjetDataAdapter.Fill(ObjetDataSet, "FICHEPATIENT")
    ObjetDataTable = ObjetDataSet.Tables("FICHEPATIENT")

    tu trouveras que l'on ajoute une row à un dataset
    et qu'on remplie une table à partir d'un dataset.

    K
    1. BONJOUR
      merci bien pour votre aide mais je crois que le code est correcte mais j'ai un problème avec l' SQL (j'arrive pas à le connecter avec le serveur)
  2. je connai pas bcp VB mais ajouter quelque chose comme ça dans le Form1_Load:
    Ds =New Dataset()
    

    et essayer
    1. Bonjour,

      Dans un premier temps il faudrait connaitre le type de BD que tu utilise !!!

      Tu trouveras ici toutes les types de BDs ainsi que la chaine de connection.
      http://http://www.connectionstrings.com/

      "la référence d'objet n'est pas définie à une instance d'un objet"
      --->> ds.Tables("client").Rows.Add(TextBox1.Text.ToString, TextBox2.Text)

      .Tables("client") n'est pas définie à une instance d'objet.

      Dim ds As New DataSet("test")

      donc ds.tables("client") n'exite pas.

      Un DataSet n'est pas un DataTable !

      Moi, j'utilise des objets ainsi que des collections d'objets pour récupérer
      les données afin de la monter jusqu'à l'interface.

      Voici un exemple :

      Public Class Lecture
      	
      		Private OuvrirConnection()
      			Try
      			    Connection.ConnectionString = "Provider = Microsoft.Jet.OleDB.4.0;" & "DataSource =" & /Dosier/Video.mdb;
      			    Connection.Open
      			    
      			Catch ex As Exception
      			    Debug.Writeline("Erreur de connection")
      			End Try
      			    
      		End Sub
      	
      		Private Function CreerInstance(ByVal objet As DataRow, ByVal pChemin As String) As Type_Entite
      
      			Debug.WriteLine("Entree - VIDEO_SQL : CreerInstance")
      
      			Dim clientEntite As Type_Entite = New Type_Entite
      
      			Try
      
      				With clientEntite
      
      	                If (objet.Item(Type_Indices.ColumnIndex_MediaCassette) IsNot Nothing) Then
      	                    .MediaCassette = CType(objet.Item(Type_Indices.ColumnIndex_MediaCassette), String)
      	                End If
      
      	                If (objet.Item(Type_Indices.ColumnIndex_MediaAnnee) IsNot Nothing) Then
      	                    .MediaAnnee = CType(objet.Item(Type_Indices.ColumnIndex_MediaAnnee), Int32)
      	                End If
      
      	                If (objet.Item(Type_Indices.ColumnIndex_MediaTitreFrancais) IsNot Nothing) Then
      	                    .MediaTitre_Francais = CType(objet.Item(Type_Indices.MediaTitreFrancais), String)
      	                End If
      
      	                If (objet.Item(Type_Indices.ColumnIndex_MediaEpisode) IsNot Nothing) Then
      	                    .MediaEpisode = CType(objet.Item(Type_Indices.ColumnIndex_MediaEpisode), Int32)
      	                End If
      
      	                If (objet.Item(Type_Indices.ColumnIndex_MediaNationalite) IsNot Nothing) Then
      	                    .MediaNationalite = CType(objet.Item(Type_Indices.ColumnIndex_MediaNationalite), String)
      	                End If
      
      	                If (objet.Item(Type_Indices.ColumnIndex_MediaStyle) IsNot Nothing) Then
      	                    .MediaStyle = CType(objet.Item(Type_Indices.ColumnIndex_MediaStyle), String)
      	                End If
      
      	                If (objet.Item(Type_Indices.ColumnIndex_MediaCategorie) IsNot Nothing) Then
      	                    .MediaCategorie = CType(objet.Item(Type_Indices.ColumnIndex_MediaCategorie), String)
      	                End If
      
      	                If (objet.Item(Type_Indices.ColumnIndex_MediaDuree) IsNot Nothing) Then
      	                    .MediaDuree = CType(objet.Item(Type_Indices.ColumnIndex_MediaDuree), String)
      	                End If
      
      	                If (objet.Item(Type_Indices.ColumnIndex_MediaCote) IsNot Nothing) Then
      	                    .MediaCote = CType(objet.Item(Type_Indices.ColumnIndex_MediaCote), Int32)
      	                End If
      
      	                If (objet.Item(Type_Indices.ColumnIndex_MediaRealisateur) IsNot Nothing) Then
      	                    .MediaRealisateur = CType(objet.Item(Type_Indices.ColumnIndex_MediaRealisateur), String)
      	                End If
      
      	                If (objet.Item(Type_Indices.ColumnIndex_MediaSerie) IsNot Nothing) Then
      	                    .MediaSerie = CType(objet.Item(Type_Indices.ColumnIndex_MediaSerie), String)
      	                End If
      
      	                If (objet.Item(Type_Indices.ColumnIndex_MediaTitreAnglais) IsNot Nothing) Then
      	                    .MediaTitreAnglais = CType(objet.Item(Type_Indices.ColumnIndex_MediaTitreAnglais), String)
      	                End If
      
      	                If (objet.Item(Type_Indices.ColumnIndex_MediaMode) IsNot Nothing) Then
      	                    .MediaMode = CType(objet.Item(Type_Indices.ColumnIndex_MediaMode), String)
      	                End If
      
      	                If (objet.Item(Type_Indices.ColumnIndex_MediaFicheOK) IsNot Nothing) Then
      	                    .MediaFiche_OK = CType(objet.Item(Type_Indices.ColumnIndex_MediaFicheOK), String)
      	                End If
      
      	                If (objet.Item(Type_Indices.ColumnIndex_MediaStock) IsNot Nothing) Then
      	                    .MediaStock = CType(objet.Item(Type_Indices.ColumnIndex_MediaStock), String)
      	                End If
      
      	                If (objet.Item(Type_Indices.ColumnIndex_MediaClasse) IsNot Nothing) Then
      	                    .MediaClasse = CType(objet.Item(Type_Indices.ColumnIndex_MediaClasse), String)
      	                End If
      
      	                If (objet.Item(Type_Indices.ColumnIndex_MediaType) IsNot Nothing) Then
      	                    .MediaType = CType(objet.Item(Type_Indices.ColumnIndex_MediaType), String)
      	                End If
      
      	                If (objet.Item(Type_Indices.ColumnIndex_MediaQualite) IsNot Nothing) Then
      	                    .MediaQualite = CType(objet.Item(Type_Indices.ColumnIndex_MediaQualite), Int32)
      	                End If
      
      	                If (objet.Item(Type_Indices.ColumnIndex_MediaCritiques) IsNot Nothing) Then
      	                    .MediaCritiques = CType(objet.Item(Type_Indices.ColumnIndex_MediaCritiques), Int32)
      	                End If
      
      	                If (objet.Item(Type_Indices.ColumnIndex_MediaNumeroCode) IsNot Nothing) Then
      	                    .MediaNumeroCode = CType(objet.Item(Type_Indices.ColumnIndex_MediaNumeroCode), Int32)
      	                End If
      
      	                If (objet.Item(Type_Indices.ColumnIndex_MediaActeurs_P) IsNot Nothing) Then
      	                    .MediaActeurs_P = CType(objet.Item(Type_Indices.ColumnIndex_MediaActeurs_P), String)
      	                End If
      
      	                If (objet.Item(Type_Indices.ColumnIndex_MediaActeurs_S) IsNot Nothing) Then
      	                    .MediaActeurs_S = CType(objet.Item(Type_Indices.ColumnIndex_MediaActeurs_S), String)
      	                End If
      
      	            End With
      
      	            Debug.WriteLine("Sortie - VIDEO_SQL : CreerInstance")
      	            
      	        Catch ex As exException
      	            Debug.WriteLine("Erreur - VIDEO_SQL : CreerInstance")
      	        End Try
      
      	        Return clientEntite
      
      	    End Function
      
      	
      		Public Function Obtenir_Liste_Videos(ByVal Critere As Type_Criteres, ByVal pChemin As String) As Type_Collection
      
      	        
      	        Debug.WriteLine("Entree - Video_SQL - Obtenir_Liste_Vide")
      	        
      	        OuvrirConnection()	        
      	        
      	        Dim MonAdapteur As OleDb.OleDbDataAdapter = Nothing
      	        Dim MonDataTable As DataTable = Nothing
      	        Dim MonDataSet As New DataSet()
      	        Dim DataRowLocal As DataRow
      	        Dim MaCollection As New Type_Collection
      	        Dim MonEntite As New Type_Entite
      
      	        Try
      	            Dim reqSQL As String = "SELECT * FROM TableVideo;"
      
      	            MonAdapteur = New OleDbDataAdapter(reqSQL, Connexion)
      	            MonAdapteur.Fill(MonDataSet, "TableVideo")
      	            MonDataTable = MonDataSet.Tables("TableVideo")
      
      	            For Each DataRowLocal In MonDataTable.Rows
      	                MonEntite = CreerInstance(DataRowLocal, pChemin)
      	                MaCollection.Add(MonEntite)
      	            Next
      
      	            Debug.WriteLine("Sortie - Video_SQL - Obtenir_Liste_Videos")
      	            
      	        Catch ex As Exception
      	            Debug.WriteLine("Erreur - Video_SQL - Obtenir_Liste_Videos")
      	            MaCollection = Nothing
      	        Finaly
      		    Connection.Close
      	        End Try
      
      	        Return MaCollection
      
      	    End Function
      
      End Class
      	
      


      Ayant change de version Linux OpenSuse j'ai des problème avec la tabulation,
      en effectuant un copier/coller dans un nouveau projet VB, tu pourras y voir plus clair.

      K