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

ilooo Messages postés 2 Statut Membre -  
Kalissi Messages postés 221 Statut Membre -
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. Kalissi Messages postés 221 Statut Membre 20
     
    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
    2
    1. ilooo Messages postés 2 Statut Membre
       
      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)
      0
  2. tsri_badr_esgi Messages postés 530 Date d'inscription   Statut Membre Dernière intervention   9
     
    je connai pas bcp VB mais ajouter quelque chose comme ça dans le Form1_Load:
    Ds =New Dataset()
    

    et essayer
    1
  3. Kalissi Messages postés 221 Statut Membre 20
     
    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
    1