Base de données access problème de dataset [Résolu]

Signaler
Messages postés
59
Date d'inscription
lundi 11 janvier 2010
Statut
Membre
Dernière intervention
4 août 2015
-
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
-
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

Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
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
Messages postés
59
Date d'inscription
lundi 11 janvier 2010
Statut
Membre
Dernière intervention
4 août 2015

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.
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
Je n'ai pas compris ta question