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

Fermé
Signaler
Messages postés
2
Date d'inscription
vendredi 17 mai 2013
Statut
Membre
Dernière intervention
6 juin 2013
-
Messages postés
218
Date d'inscription
jeudi 2 mai 2013
Statut
Membre
Dernière intervention
15 juillet 2019
-
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

Messages postés
218
Date d'inscription
jeudi 2 mai 2013
Statut
Membre
Dernière intervention
15 juillet 2019
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
Messages postés
2
Date d'inscription
vendredi 17 mai 2013
Statut
Membre
Dernière intervention
6 juin 2013

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
Messages postés
525
Date d'inscription
samedi 21 mars 2009
Statut
Membre
Dernière intervention
26 mai 2014
9
je connai pas bcp VB mais ajouter quelque chose comme ça dans le Form1_Load:
Ds =New Dataset()

et essayer
1
Messages postés
218
Date d'inscription
jeudi 2 mai 2013
Statut
Membre
Dernière intervention
15 juillet 2019
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