Remplir un Dataset avec plusieurs tables...... [Résolu]

BasicZx81 140 Messages postés samedi 5 mars 2011Date d'inscription 13 août 2013 Dernière intervention - 12 nov. 2011 à 20:15 - Dernière réponse : BasicZx81 140 Messages postés samedi 5 mars 2011Date d'inscription 13 août 2013 Dernière intervention
- 14 nov. 2011 à 20:56
Bonsoir à tous,
Je n'ai pas programmé depuis plusieurs année donc je suis un peu perdu avec l'arrivée de ADO.NET et plus précisément sur les points suivants : (Certaines questions vont vous paraître des questions de niveau débutant, j'espère que vous serez indulgent....)

1- Comment remplir un Dataset avec plusieurs tables ? Beaucoup d'exemple sur le web ne charge qu'une seule table ! hors si j'ai bien suivi le dataset est prévu pour contenir plusieurs tables.
Pour une seule table j'utilise le code suivant (dont j'ai enlevé quelques lignes pour une meilleure lisibilité)
sql = "SELECT * FROM Table1"
DBcommand = New OleDbCommand(sql)
DBDataAdapter = New OleDbDataAdapter(DBcommand)
DBDataAdapter.Fill(DBDataSet, "Table1")

2- Comment connaitre le nom des tables et les noms de colonne de chaque tables d'une base .mdb non connu à l'avance.

Je vous remercie beaucoup si vous pouvez m'aider sur ces 2 points.
Afficher la suite 

7 réponses

Répondre au sujet
BasicZx81 140 Messages postés samedi 5 mars 2011Date d'inscription 13 août 2013 Dernière intervention - 14 nov. 2011 à 20:56
+3
Utile
Merci le Pivert pour ton aide,
Visiblement le Dataset n'est pas trop prévu pour fonctionner comme je le pensais. Par exemple quand j’exécute la commande OleDBAdapter.Fill (ds) , celle-ci charge le dataset avec des données appelées via ma commande sql et bizarrement comme je n'ai pas spécifié de nom de table l'Adapter lui donne automatiquement le nom "Table". Je manque un peu trop de connaissance à ce niveau pour allez plus loin et je vais acheter un ou deux livres sur ADO.net pour connaitre un peu mieux ce Dataset et l'usage que l'on peux en faire.
Je te remercie beaucoup pour ton aide qui m'a quand même aidé à avancer un peu plus. je clôture le post.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de BasicZx81
Utilisateur anonyme - 13 nov. 2011 à 00:10
0
Utile
Salut,

Pour la première question: Si ça fonctionne avec la Table1, je ne vois pas pourquoi ça ne fonctionnerait pas en rajoutant la Table2 (donc plusieurs Tables).
(SELECT * FROM Table2)

Pour la deuxième question: Connais-tu au moins le nom du fichier .mdb? Si oui il faut l'ouvrir sous access et tu auras les noms des tables avant de créer ton code.

L'application n'est pas sensée les deviner, (apart quelques membres sur ce site qui possèdent une boule de cristal qui arrivent ).
Tu dois lui dire quel est le fichier, le nom des tables et colonnes.



CF2i - Guadeloupe
Ingénierie Informatique
Commenter la réponse de Utilisateur anonyme
cs_Le Pivert 5065 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 13 avril 2018 Dernière intervention - 13 nov. 2011 à 06:45
0
Utile
Bonjour,
Sans boule de cristal tu peux connaitre et afficher les tables contenues dans ta base. Voir ce programme:

http://www.vbfrance.com/codes/OUVRIR-BASE-ACCESS-CLIC-DROIT_53474.aspx

@+Le Pivert
Commenter la réponse de cs_Le Pivert
BasicZx81 140 Messages postés samedi 5 mars 2011Date d'inscription 13 août 2013 Dernière intervention - 13 nov. 2011 à 10:17
0
Utile
Merci acive et Le Pivert,
Dans l'exemple de "Le Pivert" j'obtiens le nom des tables (voir extrait du code ci-dessous)donc cela réponds à ma 2eme question. Concernant la 1ere question je suppose que je peux utiliser le nom de ces tables pour charger mon Dataset (j'ai pas encore essayé) mais est-ce qu'il n'existe pas une commande simple du style : DBDataAdapter.Fill(DBDataSet) sans spécifier de noms de table ? (j'ai essayé cette commande, ca ne marche pas !!!).


Extrait de code pour obtenir le noms des tables :

Private Sub affichertable()
Dim i As Integer
cmbtable.Items.Clear()
'Connexion à la base de données Northwind dans SQL Server.
'Soyez sûr d'utiliser un compte qui a l'autorisation à la liste des tables.
connex.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Cheminsource
connex.Open()

'Récupérer les informations de schéma sur les tables.
'Par ce que les tableaux comprennent des tables, vues, et d'autres objets,
'limiter uniquement TABLE dans le tableau objet de restrictions.
DT = connex.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, _
New Object() {Nothing, Nothing, Nothing, "TABLE"})

'Liste le nom du tableau de chaque ligne dans la table de schéma.
For i = 0 To DT.Rows.Count - 1
cmbtable.Items.Add(DT.Rows(i)!TABLE_NAME.ToString)
Next i
'Fermer explicitement - ne pas attendre le garbage collection
connex.Close()
End Sub
Commenter la réponse de BasicZx81
cs_Le Pivert 5065 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 13 avril 2018 Dernière intervention - 13 nov. 2011 à 11:22
0
Utile
Dans l'exemple que je t'ai donné les tables sont chargées de cette manière:

Private Sub LoadDataTable()
       DA = New OleDb.OleDbDataAdapter("Select * from " & cmbtable.Text, connex)
        DT = New DataTable
        DA.Fill(DT)
       'initialiser le command builder, cela sera utilisé plus tard ..
        CMB = New OleDb.OleDbCommandBuilder(DA)
    End Sub


Il y a de nombreux commentaires. Je pense que c'est assez clair. Les tables se chargent 1 à la fois et c'est logique, je ne vois pas comment on pourrait afficher toutes les table en même temps!!!!
Bonne continuation
Commenter la réponse de cs_Le Pivert
BasicZx81 140 Messages postés samedi 5 mars 2011Date d'inscription 13 août 2013 Dernière intervention - 13 nov. 2011 à 12:23
0
Utile
Merci pour ta réponse Le Pivert.
Je pensais utiliser une base de données pour sauvegarder les données de mon programme, pour se faire l'idée du Dataset m'a paru être une bonne solution (Mes données pouvant s'organiser dans plusieurs tables). Je lis, écrit ou modifie mes données dans mon programmes et pour la sauvegarde il me suffirait d'envoyer simplement une commande update sur le Dataset.
Il est possible que cela ne soit pas une bonne utilisation du Dataset, j'essaye de comprendre en même temps l’intérêt du dataset par rapport au datatable, est t'on vraiment obligé de charger chaque tables séparément dans un datatable ?
Pour l'instant je fait quelques essaies avant d'entreprendre le développement d'une application, si quelqu'un pouvait m’éclairer un peu plus la dessus ça serait super sympa.
Commenter la réponse de BasicZx81
cs_Le Pivert 5065 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 13 avril 2018 Dernière intervention - 13 nov. 2011 à 14:23
0
Utile
J'ai trouvé ceci. J'espère que tu trouveras ton bonheur.

http://vb.net-informations.com/dataset/vb.net-ado.net-dataset-tutorial.htm
Commenter la réponse de cs_Le Pivert

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.