|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Nouveau Membre du Club
![]() Inscription : avril 2008 Messages : 197 ![]() |
Bonjour,
Je code une fonction qui parcourt une table d'employés via un recordset. Code :
Code :
Y a-t-il une méthode efficace pour récupérer pour chaque employé les services auxquels ils sont liés, mais sans parcourir un recordset ? En gros est-ce qu'il existe en SQL une méthode Concatenate ? Ou bien en VBA une méthode Join() qu'on pourrait exécuter directement sur un Recordset ? Merci pour votre aide. |
||||
|
|
00
|
|
|
#2 | ||
|
Membre actif
![]() Benoit RoccoInscription : décembre 2009 Messages : 87 ![]() |
Ca serait surement plus rapide en faisait une seule requête avec jointure :
Code :
De plus, dans ton exemple de code tu ouvres un nouveau recordset rst2 à chaque boucle et tu ne le fermes jamais, ca ne doit pas aider non plus. Si après ca c'est vraiment toujours trop lent, il faudrait peut-être voir à créer des index sur tes tables. As-tu créé la clé étrangère pour faire le lien entre tes deux tables ? Les clés étrangères sont automatiquement indexées et accélère les jointures (pour l'accès en lecture en tout cas, pour l'écriture c'est plutôt l'inverse). |
||
|
|
00
|
|
|
#3 |
|
Nouveau Membre du Club
![]() Inscription : avril 2008 Messages : 197 ![]() |
Merci pour ta réponse CaptainKirk.
Pour résumer, j'essaie d'alimenter une liste dans un formulaire à l'aide du résultat des recordsets. J'ai tenté de récupéré les employés et leur service en une seule requête avec jointure comme tu m'as conseillé, et effectivement cela va beaucoup + vite (5 secondes au lieu de 40). Pour la BD, la table T_SERVICE est en fait la table intermédiaire qui contient le Service (qui est un ID) et ID_Emp. Les 2 champs sont indexés. Encore merci. Je pense qu'il y a possibilité de gagner encore en vitesse d'exécution : inclure un champ Serivce dans T_Employe qui contiendrait la liste concaténée des services liés à l'employé. Mais ça ne serait pas propre de faire ça. :/ |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com