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 -
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 :)
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
-
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 -
je connai pas bcp VB mais ajouter quelque chose comme ça dans le Form1_Load:
Ds =New Dataset()
et essayer -
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