OVH Cloud OVH Cloud

Sous-requete

4 réponses
Avatar
gargouil
Bonjour
Actuellement je récupère des données issues de requetes depuis l'objet
"Adodc" dans VB et je les affiche dans un "datagrid". Tout fonctionne
correctement sauf quand j'utilise une requete qui fait appelle à une (voir
plus) sous-requete dans Access.

extrait du code
----------
Form1.Adodc4.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=" & Path_BdD & ";Mode=ReadWrite;Persist Security Info=False"
Str_Sql = "SELECT * from regroup_boucle_systeme"
Form1.Adodc4.RecordSource = Str_Sql
Form1.Adodc4.Refresh
compteur = Form1.Adodc4.Recordset.RecordCount
-------------
Mon compteurd'enregistrement "compteur" reste désespérement vide

4 réponses

Avatar
dark poulpo
> ----------
Form1.Adodc4.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=" & Path_BdD & ";Mode=ReadWrite;Persist Security Infoúlse"
Str_Sql = "SELECT * from regroup_boucle_systeme"
Form1.Adodc4.RecordSource = Str_Sql
Form1.Adodc4.Refresh
compteur = Form1.Adodc4.Recordset.RecordCount
-------------



1) je ne vois aucune sous requete
2) les sous requettes bouffent du cpu et donc du temps ( a chaque
enregistrement ca lance la sous-requette), utilises les left join ou right
join quand c possible.
Avatar
gargouil
> 1) je ne vois aucune sous requete


Effectivement la requete que j'exécute dans la base Access est le le
résultat de sous requête.

Précision sur la requête regroup_boucle_systeme :

SELECT Systeme.Num_Doc, voie1_S.TAG_BDD AS loop1, voie2_S.TAG_BDD AS loop2,
voie3_S.TAG_BDD AS loop3, voie4_S.TAG_BDD AS loop4, Systeme.CHASS_ARM,
Systeme.FBM_SLOT, Systeme.TYPE_FBM
FROM (((Systeme LEFT JOIN voie4_S ON Systeme.Num_Doc = voie4_S.Num_Doc) LEFT
JOIN voie1_S ON Systeme.Num_Doc = voie1_S.Num_Doc) LEFT JOIN voie2_S ON
Systeme.Num_Doc = voie2_S.Num_Doc) LEFT JOIN voie3_S ON Systeme.Num_Doc =
voie3_S.Num_Doc
GROUP BY Systeme.Num_Doc, voie1_S.TAG_BDD, voie2_S.TAG_BDD, voie3_S.TAG_BDD,
voie4_S.TAG_BDD, Systeme.CHASS_ARM, Systeme.FBM_SLOT, Systeme.TYPE_FBM
HAVING (((Systeme.Num_Doc) Like "004*"));


Systeme étant une table d'access
et voie1_S, voie2_S,voie3_S,voie4_S sont des sous requetes, extrait :

SELECT IIf(Systeme!TAG_BDD="RESERVE_S","RESERVE",Systeme!TAG_BDD) AS
TAG_BDD, Systeme.OrdrePage, Systeme.Num_Doc, LI_Complete.A1
FROM Systeme INNER JOIN LI_Complete ON Systeme.TAG_BDD = LI_Complete.G4
WHERE (((Systeme.OrdrePage)=1) AND ((LI_Complete.A1)="S"));


2) les sous requettes bouffent du cpu et donc du temps ( a chaque
enregistrement ca lance la sous-requette), utilises les left join ou right
join quand c possible.



J'ai vonlontairement structuré les requètes de la sorte, je n'ai pas
d'éxigence de rapidité.
Avatar
dark poulpo
desolé mais la il est tellement tard que jarrive plus a refleichir, je
verais ca plus tard si jai le temps,
essaye de separer tes left join au lieu dimbriquer, et reprend tetapes par
etapes, (c a dir tu mets une table, tu lances, tu rajoute une, tu lances,
etc ....)

et aussi au cas ou, fait un bref descriptif de tes tables , jy verrai plus
clair.

--
-----
http://dark.freezee.org/
- Dark Update v1.0
- Dark Emule v0.44b r4
- Dark 3D-X (le desktop 3d pour windows) (----------> v0.7 beta dispo)
Avatar
gargouil
Merci pour l'aide
Mais j'ai enfin trouvé le problème
il se situait dans Access
la partie VB fonctionnait correctement

J'ai réécris la requete et les sous requetes d'Access et apparament les
liens se sont remis à jour ou un truc dans le genre et depuis je récupère mes
enregistrements sous VB

C'est pas la première fois que j'ai dessouscis avec Access et ces requetes
et tables liées avec d'autre bases, les liens ne suivent pas toujours.

Merci