Bonjour
Je n'ai pas suivi l'échange, mais je pense que tu pourrais également très valablement regarder du coté des recordsets hiérarchique avec le provider MD DataShape.
Ce provider te permet de créer simplement un seul recordset avec des tables liéés, avec un code du genre:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| Dim SQL As String
Set cn = New ADODB.Connection
Set rsPub = New ADODB.Recordset
Set colBndBiblio = New BindingCollection
cn.Provider = "MSDataShape"
cn.Open "Data Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\DidactDB\Biblio2000.mdb"
SQL = "SHAPE {SELECT * FROM Publishers ORDER BY Name} APPEND " & _
"({SELECT ISBN, PubID, Title, [Year Published], Description, Subject, Notes FROM Titles} " & _
"AS Title RELATE PubID TO PubID)"
rsPub.Open SQL, cn, adOpenDynamic, adLockOptimistic, adCmdText
rsPub.MoveFirst
'Définit le jeu d'enregistrements comme source de données (DataSource) de la collection Bindings.
Set colBndBiblio.DataSource = rsPub |
Dans ce bout de code, tu crées un recordset hiérarchique rsPub contenant deux tables (Publishers et Titles), servant de source à une binding collellection (ou à tout autre objet). Tu pourrais le faire avec plus de tables (j'utilise jusqu'à 5 tables, mais on pourrais aller au delà). La relation se fait dans la chaîne SQL par:
AS Title RELATE PubID TO PubID
Tu obtiens alors un recordset hiérarchique pouvant directement être affiché dans une mSHFlexgrid. Tu peux également accéder à une des tables du dit recordset en utilisant (entre autre) son alias. Par exemple
Set DataGrid1.DataSource = rsPub!Title.Value
permet de définir comme source de la DataGrid la table 'aliassée' Title du recordset. Cela fonctionne exactement comme les objets Command du DataEnvironment (le DE utilise d'ailleurs ce provider).
Bref, je vois beaucoup d'avantages à utiliser MSDataShape... Si tu veux plus d'info sur le thème, regardes mon praticiel sur les recordsets hiérarchiques, notamment la feuille Grille DataGrid qui contient l'exemple ci-dessus.
Bon courage.
Partager