Requêtes successives via docmd.runsql

selenium1 Messages postés 1 Date d'inscription lundi 7 mars 2011 Statut Membre Dernière intervention 7 mars 2011 - 7 mars 2011 à 23:12
c148270 Messages postés 303 Date d'inscription mercredi 12 janvier 2005 Statut Membre Dernière intervention 3 octobre 2013 - 9 mars 2011 à 12:37
Dans un module VBA sous Access, j'exécute les unes à la suite des autres des requêtes.

Hélas, il semble que lors de l'exécution du module, il se perd un peu ce qui n'est pas le cas si j'exécute pas à pas. C'est comme s'il exécuter la requête suivante sans avoir le résultat de la requête précédente.

Merci d'avance

DoCmd.RunSQL "SELECT TOP " & Verification & " * INTO PoleIteTemp FROM PoleTemp ORDER BY PoleTemp.MaxTradeOff DESC;"

DoCmd.RunSQL "SELECT TOP 1 * INTO PoleIte FROM PoleIteTemp ORDER BY PoleIteTemp.MaxTradeOff ASC;"

DoCmd.RunSQL "UPDATE [Result Pole] INNER JOIN PoleIte ON [Result Pole].Pole = PoleIte.Pole " & _
"SET [Result Pole].Iteration = " & Iteration & ", [Result Pole].GainNet = [PoleIte]![GainNet], " & _
"[Result Pole].NbIRISsuppCouvert = [PoleIte]![NbIRIS_Sup], [Result Pole].TradeOffIteration = [PoleIte]![MaxTradeOff], " & _
"[Result Pole].PotGravitaireIte = [PoleIte]![PotGravitaire], [Result Pole].PotHuffIte = [PoleIte]![PotHuff], " & _
"[Result Pole].Temps100k = [PoleIte]![Temps100k], [Result Pole].Var2 = " & Verification & " ;"


DoCmd.RunSQL "UPDATE [Result IRIS] INNER JOIN ([Result Pole] INNER JOIN DistancierT ON [Result Pole].Pole = DistancierT.Pole) ON [Result IRIS].IRIS = DistancierT.IRIS SET [Result IRIS].IRIS_CouvertIteration = 1 " & _
"WHERE (([Result Pole]![Iteration]<> 0));"

DoCmd.RunSQL "SELECT DistancierT.IRIS, Max(DistancierT.Accessibilité) AS MaxDeAccessibilité, Sum(DistancierT.Accessibilité) AS SommeDeAccessibilité INTO [XXX1] " & _
"FROM DistancierT INNER JOIN [Result Pole] ON DistancierT.Pole = [Result Pole].Pole " & _
"WHERE ((([Result Pole].Iteration) <> 0)) " & _
"GROUP BY DistancierT.IRIS;"

DoCmd.RunSQL "UPDATE [XXX1] INNER JOIN [Result IRIS] ON [XXX1].IRIS = [Result IRIS].IRIS SET [Result IRIS].AccMaxIRIS_Couvert = [XXX1]![MaxDeAccessibilité], " & _
"[Result IRIS].AccCumIRIS_Couvert = [XXX1]![SommeDeAccessibilité];"



DoCmd.RunSQL "SELECT DistancierT.Pole, Sum(DistancierT.PopIRIS) AS SommeDePopIRIS INTO xxx10 " & _
"FROM DistancierT INNER JOIN [Result IRIS] ON ([Result IRIS].AccMaxIRIS_Couvert = DistancierT.Accessibilité) AND (DistancierT.IRIS = [Result IRIS].IRIS) " & _
"WHERE ((([Result IRIS].IRIS_CouvertIteration) = 1)) " & _
"GROUP BY DistancierT.Pole " & _
"ORDER BY Sum(DistancierT.PopIRIS); "


Set Table5 = Database.OpenRecordset("Select top 1 SommeDePopIRIS from XXX10 Order BY SommeDePopIRIS ASC ", dbOpenDynaset, dbSeeChanges)
NbRowTb5 = Table5.RecordCount
RecTb5 = Table5.GetRows(Table5.RecordCount)
MinGrav = RecTb5(0, 0)
Table5.MoveFirst

Table5.Close
Set Table5 = Nothing

1 réponse

c148270 Messages postés 303 Date d'inscription mercredi 12 janvier 2005 Statut Membre Dernière intervention 3 octobre 2013 1
9 mars 2011 à 12:37
Bonjour

Effectivement la méthode runsql est asynchrone.
Il faut donc utiliser la methode execute ou
"convertir" en requete access et utiliser la méthode openquery

bonne journée
0
Rejoignez-nous