Forum Clubic

[VB NET 2003] ADO.NET - Probleme avec DataSet

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

+1 … :paf:

je n’ai jamais compris l’interet des dataset, dataadapter, datatable, … cay nul :ane:

perso j’utilise OleDbCommand().ExecuteReader() pour ben lire la base et des requetes pour ajouter ou modifier des données avec OleDbCommand().ExecuteNonQuery() … !

J’ai trouvé [ce document](http://ttp://www.anaphazgroup.com/genie5/Utiliser-ADONET-VB/Utiliser-ADONET-VB.pdf#search=% Utiliser-ADONET-VB.pdf%) sur Internet, je suis en train de le lire et je peux dire que ADO.NET est vraiment différent de ADO. Je suis tenté de dire, <Pourquoi faire simple quand on peut faire compliqué!>

Je vais possiblement utiliser la même chose que toi. Quand penses-tu coté performance?

voici un comparatif assez intéressent :
http://sqlite.phxsoftware.com/forums/465/ShowPost.aspx

:super:

Merci Gooom,

C’est super!