Dans VB NET si nous declarons un objet Table que recois les donnees d’une table d’un DataSet, est t-il normal que si je vide le DataSet que l’objet Table se vide aussi? Pourtant l’objet Table n’est pas public.
Dans le code 1, j’initialise un datagride sur un formulaire FicheClient.
Dans le code 2, la fonction me retournant le resultat de recherche sous forme de DataTable
Quand je rapelle la fonction findossier, mon dataGride se vide ???
J’ai eu la facheuse idee de fonctionner comme en ADO de vb net avec le recordset mais avec ADO.NET c’est vraiment pas pareille.
Voici mon code :
Private Sub filldatagrideDoss()
Dim tbldatadossier As DataTable
tbldatadossier = findossier("SELECT tbldossier.fldnodoss AS NoDossier, tbldossier.flddatedoss AS DateDossier, tbldossier.fldrecontre_civ AS NoCiv,tbldossier.fldrecontre_rue AS Rue,tbldossier.fldrecontre_app AS App, tblmunicipalite.Nom AS Ville, " _
& "tbldossier.fldnotes AS Notes FROM tblmunicipalite INNER JOIN tbldossier ON tblmunicipalite.Numéro = tbldossier.fldrecontre_ville " _
& " WHERE (((tbldossier.fldcustomerid)=" & Me.txnoclient.Text & "))")
If Not (tbldatadossier Is Nothing) Then
Me.dtagridedoss.DataSource = tbldatadossier
End If
intitdatagrideDoss()
End Sub
Function findossier(ByRef StrSQL) As DataTable
ObjDataSet.Clear()
ObjCommande = New OleDbCommand(StrSQL)
ObjDataAdaptor = New OleDbDataAdapter(ObjCommande)
ObjCommande.Connection = ObjConnexion
ObjDataAdaptor.Fill(ObjDataSet, "tblcustomerdoss")
ObjDataTableDoss = ObjDataSet.Tables("tblcustomerdoss")
If DataRowNumberDoss < 0 Then Exit Function
'Lors de l'ouverture de la BD, s'il n'y a aucun enregistrement
If DataRowNumberDoss > ObjDataTableDoss.Rows.Count - 1 Then Exit Function
' ObjetTable.Rows(Numéro de lignes).Item( Nom de colonne) donne le contenu d'un champ dans une ligne donnée
If ObjDataTableDoss.Rows.Count > 0 Then
findossier = ObjDataTableDoss
End If
ObjDataAdaptor = Nothing
ObjCommande = Nothing
End Function