DataSet: le remplir et le consulter ?

Résolu
LimDulLeNecromancien Messages postés 6 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 20 juillet 2008 - 18 juil. 2008 à 12:40
youpiyoyo Messages postés 539 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 14 juillet 2010 - 21 juil. 2008 à 09:36
Bonjour.

Avec du code j'ai créé une base de donnée acces avec les tables et champs.
Maintenant je désire réaliser les liaisons entre les tables.

Je me base sur cette documentations:
http://plasserre.developpez.com/v6-5.htm
Et le cour d'Olivier Zimmermann:
http://www.vbfrance.com/Fichiers/Tutos/vbnet.zip
Page 106 et suivantes avec surtout pour le cas présent les pages 122 à 124.

Je cite:
"La seconde possibilité permet de laisser du DataAdapter le soin de créer le DataTable ainsi que sa structure. Dans ce cas, il suffit d'appeler la méthode Fill en passant en paramètre le nom d'un DataTable inexistant"

J'ai le code suivant:
-----Début du code-----
        'Création du DataSet
        Dim DataSetTables As New DataSet("MesTables")

        'Déclarer la connexion mais sans l'ouvrir
        Dim Connect As New OleDb.OleDbConnection
        Connect.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= " & DialogueNouveauFichier.FileName & ";"

        'Création du DataAdapter et remplissage du DataSet
        'Voir page 124 du cours d'Olivier Zimmermann
        Dim Data_Adapter As New OleDbDataAdapter("Select * from T_Total", Connect.ConnectionString)
        Data_Adapter.Fill(DataSetTables, "truc_innexistant")
-----Fin du code-----

Je n'ai pas d'erreur lors de l'exécution de ce code.
Même si j'ai l'avertissement suivant: D:\Boursicoteur\Boursicoteur\Form1_menu.vb(347): 'nouveau_DataTable' n'est pas un membre de 'System.Data.DataSet'.

Normalement ce code réalise ceci:
 - connexion à ma bdd
 - récupération de l'ensemble de ma table T_Total
 - déconnexion
 - création d'une nouvelle DataTable pour y mettre les informations récupérées.

Je voudrai savoir le nom du DataTable créé ?
Puis comment le changer ?

Existe-il aussi un moyen "simple" de visualiser le contenu d'un DataSet (pour contrôler au fur et à mesure) ?
Un truc qui récupérerai le nom et le type des chaque composant du DataSet.
(genre permettant de savoir que A B et C sont des DataTable et E un DataGrid)
A voir également:

4 réponses

LimDulLeNecromancien Messages postés 6 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 20 juillet 2008
18 juil. 2008 à 18:24
Bon, j'ai réussi.

Finalement j'ai biaisé.
Je créé des DataTables dans mon DataSet puis ensuite je leurs donne la structure d'une table de ma bdd grâce à FillSchema:

-----Début de code-----
        'Création du DataAdapter et récupération de la structure de la table T_Cours
        Dim Data_AdapterCours As New OleDbDataAdapter("Select * from T_Cours", Connect.ConnectionString)

        'Création du DataTable avec la structure de la table T_Cours
        Data_AdapterCours.FillSchema(DataSetTables, SchemaType.Source, "DataTable_Cours")
-----Fin de code----

ensuite je manipule les DataTables.
3
youpiyoyo Messages postés 539 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 14 juillet 2010
18 juil. 2008 à 18:26
permièrement ton dataset est-ce que tu le généres par visual studio automatiquement ou tu le créé dans ton code?

si tu le genere dynamiquement,
tu ne generes pas de la bonne facon ton dataset, ton dataset contient tes tables,views, etc.., et enfin ta connection string me semble bizzard, mais bon...
donc il faut que tu créés premierement ton dataset ensuite tes datatables tu peux faire ton fill si tu veux avec ton adaptater et ensuite l'ajouter a ton dataset, ou ajouter ta datatable a ton dataset et faire un fill.
dim dtset as new dataset()
dim dtTable as new datatable
dtTable.name="TABLE1"
dtset.tables.add(dtTable)
*varie en fonction de sql et oledb fait gaf:
tu créés ton sqlcommand
genre dim sqlcmd as new sqlcommand("Select * from T_Total",connection)
tu créés ton adaptater
dim adaptater as new sqldataadaptater(sqlcmd)
adaptater.fill(dtTable)

voila le principe, le truc c que je n'ai pas de visual sur le pc sur lequel je suis en ce moment. je pourrais te faire un code d'exemple complet demain ou lundi

voila @+
youpi :)
0
LimDulLeNecromancien Messages postés 6 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 20 juillet 2008
20 juil. 2008 à 18:02
"donc il faut que tu créés premierement ton dataset ensuite tes
datatables tu peux faire ton fill si tu veux avec ton adaptater et
ensuite l'ajouter a ton dataset, ou ajouter ta datatable a ton dataset
et faire un fill."

Là je suis perdu.
0
youpiyoyo Messages postés 539 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 14 juillet 2010
21 juil. 2008 à 09:36
les etapes:
créer ton dataset s'il n'est pas créé qui va contenir tes tables.
créer ta datatable qui va contenir tes donnés
créer:
<li>connection</li><li>adaptater
</li><li>selectcommand, insertcommand, deletecommand etc...
</li>
exemple:
j'ai pris un exemple OLEDB et non sql, tu as plusieurs façon de faire en voici un exemple
code:

Dim exportDataset as new Dataset
Dim DataBasePath ="c:\exemple..mdb"

Dim connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
        DataBasePath + ";"

Dim objAdapter As New System.Data.OleDb.OleDbDataAdapter()
Dim connection As New OleDb.OleDbConnection(connectionString)
Dim sqlcmd As String="SELECT * FROM Tatable;"
connection.Open()

 objAdapter.SelectCommand = New System.Data.OleDb.OleDbCommand(sqlcmd , connection)
Try
            objAdapter.Fill(exportDataset, "NomDeTable")
Catch ex As Exception
            connection.Close()
            MsgBox(ex.Message)
            Exit Sub
End Try
connection.Close()

sinon tu créer une datatable tu lui met ce que tu veux dedans et tu fais exportDataset.tables.add(taDatatable)
Voila le principe, apres tu aussi d'autre façon de faire, mais celle ci est simple il me semble
youpi :)
0
Rejoignez-nous