Base de données access problème de dataset

Résolu
Duracelle123 Messages postés 59 Date d'inscription lundi 11 janvier 2010 Statut Membre Dernière intervention 4 août 2015 - 2 févr. 2015 à 01:58
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 - 2 févr. 2015 à 20:33
Bonjour, Je programme avec Visual studio 2010. J'ai une base de données Access 2010 nommé ListeEpicerie avec plusieurs tables. Lorsque je lis la première table mon dataSet est bon. Lorsque je lis la deuxième table j'ai le nom de colonne de la table précédente et seulement les deux premiers champs de la nouvelle table. Voici mon code:
'Dans un module:
Module mod_BDD
Dim con As New OleDb.OleDbConnection
Dim dbProvider As String
Dim dbSource As String
Dim ds As New DataSet
Dim da As OleDb.OleDbDataAdapter
Dim schemaTable As DataTable

Public Sub conextion()

dbProvider = "provider = Microsoft.ACE.OLEDB.12.0 ;"
dbSource = "Data Source =" & Application.StartupPath & "\BDD\ListeEpicerie.accdb;"

Try
con.ConnectionString = dbProvider & dbSource
con.Open()

Catch ex As Exception
MessageBox.Show("Impossible d'établir la connection à la base." & ex.Message)
End Try

End Sub

Public Sub Deconection()
Try
con.Close()

Catch ex As Exception
MessageBox.Show(ex.Message)
End Try

End Sub

Public Function LireUneTable(ByVal sql As String)

ds.Clear()
da = New OleDb.OleDbDataAdapter(sql, con)
da.Fill(ds, "ListeEpicerie")
Return ds

End Function

End Module

'Dans la form:

Public Class frm_BaseDonnees

Dim ds As New DataSet

Private Sub Base_Donnees_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

Call mod_BDD.conextion()

End Sub

Private Sub BTR_INGREDIENTS_Click(sender As Object, e As System.EventArgs) Handles BTR_INGREDIENTS.Click

'Lie la table.
ds = mod_BDD.LireUneTable("select * from Ingredients")
'Afficher la table dans le datagridview.
DGV_BDD.DataSource = ds.Tables("ListeEpicerie")

End Sub


Private Sub BTR_REPAS_Click(sender As Object, e As System.EventArgs) Handles BTR_REPAS.Click

'Lie la table.
ds = mod_BDD.LireUneTable("select * from Repas")
'Afficher la table dans le datagridview.
DGV_BDD.DataSource = ds.Tables("ListeEpicerie")

End Sub

end class


Je tente de lire dans un premier temps la table "Ingredients" l'afficher dans mon DataGridView et ça fonctionne. Par la suite en clic quand sur le bouton BTR_REPAS lire la table "Repas" et l'afficher dans le même DataGridView en ne conservant pas la table précédente. Lors de la lecture de la deuxième table, mon dataSet n'est pas bon
Merci de votre aide

2 réponses

cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
2 févr. 2015 à 10:08
Bonjour

Ce n'est pas ainsi que je procéderai.
Si tu as un module pour ta bdd ,tu devrais écrire tes requêtes dans
le module et donner un nom différent à chaque datatable
et non dans ta form

dans ton module

Public  function  LireIngredient() as dataset
ds.Clear()
da = New OleDb.OleDbDataAdapter("select * from Ingredients", con)
da.Fill(ds, "ListeIngredient")
Return ds

End Function

Public function LireRepas() as dataset
ds.Clear()
da = New OleDb.OleDbDataAdapter("select * from Repas", con)
da.Fill(ds, "ListeRepas")
Return ds

End Function

dans ta form

Private Sub BTR_INGREDIENTS_Click(sender As Object, e As System.EventArgs) Handles BTR_INGREDIENTS.Click

'Lie la table ingredients
ds = mod_BDD.LireIngredient
'Afficher la table dans le datagridview.
DGV_BDD.DataSource = ds.Tables("ListeIngredient")

End Sub

Private Sub BTR_REPAS_Click(sender As Object, e As System.EventArgs) Handles BTR_REPAS.Click

'Lie la table repas.
ds = mod_BDD.LireRepas
'Afficher la table dans le datagridview.
DGV_BDD.DataSource = ds.Tables("ListeRepas")

End Sub
0
Duracelle123 Messages postés 59 Date d'inscription lundi 11 janvier 2010 Statut Membre Dernière intervention 4 août 2015
2 févr. 2015 à 15:44
Merci de ton aide, ça fonctionne bien. Seulement une petite question pourquoi mettre le mot liste avant le nom de la table dans le module ?

Bonne journée.
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
2 févr. 2015 à 20:33
Je n'ai pas compris ta question
0
Rejoignez-nous