acces 2000, VBA et temps d'éxécution

acces 2000, VBA et temps d'éxécution - SQL/NoSQL - Programmation

Marsh Posté le 19-12-2002 à 13:22:11    

Bonjour tout le monde,
 
bon un truc me chagrinne depuis pas mal de temps mais là ca commence à ce ressentir sur mon appli de manière significative.
Le truc est que j'ai une appli ACCESS 2000 et que lorsque je clique sur le bouton OK de cette appli, action qui appelle du VBA, diverses requêtes et tout le tintoin, le résultat n'est pas celui attendu. Par contre si je fais la même action avec un point d'arrêt dans le code et que je fait poursuivre l'éxécution "à la main" le résultat obtenu est ce coup-ci le bon. Ce qui donne l'impression qu'ACCESS éxécute le code "trop rapidement et qu'il en rate des morceaux au passage"! :o  
 
Alors la question est : savez-vous pourquoi ca fait ca et comment le résoudre ?
 
Merci tout plein. [:zerod]

Reply

Marsh Posté le 19-12-2002 à 13:22:11   

Reply

Marsh Posté le 19-12-2002 à 15:22:01    

tu peux poster le code ? c'est difficile de t'aider si on ne voit pas le code qui pose problème


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 19-12-2002 à 15:35:02    

je veux bien mais il fait plus de 1500 lignes  :ouch:  
 
alors je te donnes quoi ? Le code du bouton, le code d'une des fonctions appelée ?

Reply

Marsh Posté le 19-12-2002 à 15:38:17    

Mad666 a écrit :

je veux bien mais il fait plus de 1500 lignes  :ouch:  
 
alors je te donnes quoi ? Le code du bouton, le code d'une des fonctions appelée ?

heeeuuuuu.... tu parcours les 1500 lignes en execution pas à pas ?  [:wam]


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 19-12-2002 à 15:40:22    

nope mais je mets des points d'arrêts aux entrées des fonctions (3 ou 4). Le reste ce sont des boucles! (ouais je sais c'est pas optimisé du tout mais pour l'instant ca fonctionne ;) )

Reply

Marsh Posté le 19-12-2002 à 15:43:50    

ben sans savoir ce que fait ton code, c'est dur de t'aider :/


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 19-12-2002 à 15:57:35    

bon en gros j'ai quelques zones de liste modifiable et lorsque je clique sur le bouton "ok", je vais lire les valeurs de ces zones de liste et j'en établit des critères pour mes requêtes.
Ca se présente comme ca :
 

Code :
  1. ...
  2. If choixVisu = "Par service" Then
  3.     serv = choixServ.Value
  4. ElseIf choixVisu = "Par ligne" And choixFormat <> "Alarmes" Then
  5.     MiseEnFormeLigne (Null)
  6. End If
  7. If choixFormat = "Graphique" Then
  8.     If choixDonneesGraph = "Avance/Retard" Then
  9.         GraphAR (Null)
  10.     ElseIf choixDonneesGraph = "Temps de parcours" Then
  11.         GraphTP (Null)
  12.     End If
  13. End If
  14. ...


 
MiseEnFormeLigne :

Code :
  1. index1 = choix_arret.Column(3)
  2. index2 = choix_arret2.Column(3)
  3. ...
  4. db.Execute "DELETE * FROM selection_arrets"
  5. db.Execute ("INSERT INTO selection_arrets(arret) SELECT DISTINCT Lieu_fin_section FROM selectArretsLigneReq ;" )


 
GraphTP:

Code :
  1. db.Execute "INSERT INTO tppligne([Date],[Type_jour],Nom,Direction,Parcours,Voyage,Heure_théorique,Heure_passage,Index_parcours) SELECT [Date],Type_jour,Nom,Direction,Parcours,Voyage,Heure_théorique,Heure_passage,Index_parcours FROM tppl;"
  2. ...db.Execute "CREATE TABLE tpparcours (heure TIME, théo INTEGER, Moyenne INTEGER, " & rstLieux!Nom & " INTEGER);"
  3. ...
  4. mise en forme des données et calcul d'une moyenne et de diverses statistiques


 
Et après tout ca j'aboutis à un graphe. Le problème est que ce graphe ne ressort correctement les données qu'une fois de temps en temps. La plupart du temps, on croirait qu'il est tronqué ... :heink:

Reply

Marsh Posté le 19-12-2002 à 16:04:04    

essaye de mettre un DoEvents entre ton

Code :
  1. db.Execute "DELETE * FROM selection_arrets"


et ton

Code :
  1. db.Execute ("INSERT INTO selection_arrets(arret) SELECT DISTINCT Lieu_fin_section FROM selectArretsLigneReq ;" )


 
Ce n'est qu'une suposition, maisla requete delete n'est peut-être pas terminée quand tu commence la requete insert.


Message édité par mareek le 19-12-2002 à 16:04:21

---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 19-12-2002 à 16:13:55    

c'est pas ca :/
 
edit : mais il n'attend pas la fin de l'éxécution des requêtes SQL avant de continuer son code se con d'ACCESS ???
 
En fait, le coup des points d'arrets ne fonctionne qu'une fois. Pour recommencer de la même façon, il faut que je ferme complètement la base et que je rejoue avec mes points d'arrêts  :pt1cable:
 
edit2 : bon, grosse erreur de ma part : en fait le graphe que je prends pour "bon" est en fait le mauvais et inversement. Donc on recommence : le tout petit (avec 2 ou 3 point), c'est le bon, et le gros (avec 200 ou 300 points), c'est le mauvais, c'est-à-dire que c'est celui qui a été enregistré dans le graphe lorsque je l'ai édité en mode création ( :pfff: quel con ce Mad! :o ). Pour résumer, le mauvais graphe s'affiche de temps en temps. Comment l'en empêcher ? (That is the vrai question !!!)


Message édité par Mad666 le 19-12-2002 à 16:22:49
Reply

Marsh Posté le 19-12-2002 à 16:20:24    

Mad666 a écrit :

c'est pas ca :/
 
edit : mais il n'attend pas la fin de l'éxécution des requêtes SQL avant de continuer son code se con d'ACCESS ???
 
En fait, le coup des points d'arrets ne fonctionne qu'une fois. Pour recommencer de la même façon, il faut que je ferme complètement la base et que je rejoue avec mes points d'arrêts  :pt1cable:

vraiment bizarre ton truc.
 
tu les met où tes points d'arret ?


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 19-12-2002 à 16:20:24   

Reply

Marsh Posté le 19-12-2002 à 16:24:17    

regardes mes edits au dessus. En fait mes points sont mis un peu n'importe où et pour recréer cet évènement, il faut que je les mette "plus bas dans le code" :heink:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed