OVH Cloud OVH Cloud

DoEvents

2 réponses
Avatar
J-Pierre
Bonjour tout le monde,

Je parcours en ADO un très gros RecordSet et j'affiche une barre de progression. Mais malgré un DoEvents, la barre ne progresse pas,
elle passe à 1%, 2%, jusqu'à 10%, puis plus rien, et à la fin du recordSet, elle affiche 63%.Toute idée (qui ne freine pas
l'exécution du code) est la bienvenue

Merci
J-Pierre

2 réponses

Avatar
Anor
Salut,

J-Pierre :
| Bonjour tout le monde,
|
| Je parcours en ADO un très gros RecordSet et j'affiche une barre de
| progression. Mais malgré un DoEvents, la barre ne progresse pas, elle
| passe à 1%, 2%, jusqu'à 10%, puis plus rien, et à la fin du
| recordSet, elle affiche 63%.Toute idée (qui ne freine pas l'exécution
| du code) est la bienvenue
|
| Merci
| J-Pierre


as tu essayé avec une barre de progression standard :

Dim NbTotal as Long, No as long

NbTotal = adomachin.count
Do while not adomachin.eof
No=No + 1
SysCmd acSysCmdInitMeter, "Traitement en cours " & _
Int((No / NbTotal) * 100) & "%", NbTotal
SysCmd acSysCmdUpdateMeter, No
'Traitement parcours ADO
adomachin.movenext
Loop
SysCmd acSysCmdClearStatus

ps : puisque tu manipules ADO, tu as aussi le droit de donner des bouts de code.
ça m'intéresserait d'apprendre les bases car ça manque un peu sur le forum,
et comme pour ma part j'apprends avec le forum, si personne ne publie de bouts de code simples,
on ne va pas beaucoup avancer.

--
à+
Arnaud
--------------------------------------------------
Avant toute chose : http://users.skynet.be/mpfa/
Access Memorandum - http://memoaccess.free.fr
## Réponses souhaitées sur ce forum, merci. ##
--------------------------------------------------
Avatar
J-Pierre
Encore moi,

Je sens que vous êtes tous impatient d'admirer la qualité de mon code :o)
Moi, j'utilise le contrôle ActiveX, mais je ferai comme Anor, pourquoi faire simple quand on peut faire compliqué ????

Bon, voilà la bête
-------------------------------------------------------------
Dim strgSQL, strgINS, Wreference, Wdesignation, WtexteArt, WtexteTot As String
Dim WachatsTotal, WpercentArt, WpercentTot As Double
Dim WrecordsAffected, WachatsLignes, Wlignes, Wstep As Long
Dim rst As New ADODB.Recordset
Dim cnn As New ADODB.Connection

'calcul du total du montant HT et contrôles de validité------------------------

If IsNull(DSum("[Montant HT]", "[Achats]")) Then
MsgBox "Aucune donnée importée", vbOKOnly, "TRAITEMENT DES DONNEES"
Exit Sub
End If

WachatsTotal = Round(DSum("[Montant HT]", "[Achats]"), 5)
WachatsLignes = DCount("[Montant HT]", "[Achats]")
Wstep = WachatsLignes 100

If WachatsTotal = 0 Then
MsgBox "Le total des achats est ZERO, êtes-vous sûr de vouloir continuer ?", _
vbOKOnly, "TRAITEMENT DES DONNEES"
Exit Sub
End If

DoCmd.Hourglass True

'----------------------------------------------------------------------------------------
'ça roule, pour chaque article, calculer le pourcentage et le pourcentage total
'----------------------------------------------------------------------------------------

Me.CtlActiveX5.Min = 0
Me.CtlActiveX5.Value = 0
Me.CtlActiveX5.Max = WachatsLignes
Wlignes = 0
WpercentArt = 0
WpercentTot = 0

Set cnn = CurrentProject.Connection

strgSQL = "SELECT Importation_cumul_par_article.* FROM Importation_cumul_par_article " & _
"ORDER BY MontantHT DESC;"
'MsgBox strgSQL
rst.Open strgSQL, cnn, adOpenForwardOnly, adLockReadOnly

If rst.BOF And rst.EOF Then
MsgBox "Petit problème, ça ne marche pas.....", vbOKOnly + vbCritical, _
"JE SENS QUE VOUS ALLEZ RÂLER........"
rst.Close
cnn.Close
Set cnn = Nothing
Exit Sub
End If

Do Until rst.EOF

Wlignes = Wlignes + 1

If Me.CtlActiveX5.Value < (Wlignes Wstep) Then
Me.CtlActiveX5.Value = (Wlignes Wstep)
DoEvents
End If

'ICI, des calculs qu'Anor ne comprendrait pas bien.......

strgINS = "INSERT INTO [T_Cumul Pourcentages Articles Annuels] " & _
"([Référence Article], [Désignation Article], [Année Commande], [Cumul], [Pourcentage Annuel Article HT]) " & _
"VALUES ('" & Wreference & "', '" & Wdesignation & "', " & _
rst![Année Commande] & ", " & WtexteTot & ", " & WtexteArt & ");"
'MsgBox strgINS
cnn.Execute strgINS, WrecordsAffected, adExecuteNoRecords
'MsgBox "lignes modifiées=" & WrecordsAffected

rst.MoveNext
Loop

rst.Close
cnn.close
set cnn = Nothing
--------------------------------------------------------------------------------
J-Pierre

"Anor" <http://memoaccess.free.fr/anor/email.htm> a écrit dans le message de news:
Salut,

J-Pierre :
| Bonjour tout le monde,
|
| Je parcours en ADO un très gros RecordSet et j'affiche une barre de
| progression. Mais malgré un DoEvents, la barre ne progresse pas, elle
| passe à 1%, 2%, jusqu'à 10%, puis plus rien, et à la fin du
| recordSet, elle affiche 63%.Toute idée (qui ne freine pas l'exécution
| du code) est la bienvenue
|
| Merci
| J-Pierre


as tu essayé avec une barre de progression standard :

Dim NbTotal as Long, No as long

NbTotal = adomachin.count
Do while not adomachin.eof
No=No + 1
SysCmd acSysCmdInitMeter, "Traitement en cours " & _
Int((No / NbTotal) * 100) & "%", NbTotal
SysCmd acSysCmdUpdateMeter, No
'Traitement parcours ADO
adomachin.movenext
Loop
SysCmd acSysCmdClearStatus

ps : puisque tu manipules ADO, tu as aussi le droit de donner des bouts de code.
ça m'intéresserait d'apprendre les bases car ça manque un peu sur le forum,
et comme pour ma part j'apprends avec le forum, si personne ne publie de bouts de code simples,
on ne va pas beaucoup avancer.

--
à+
Arnaud
--------------------------------------------------
Avant toute chose : http://users.skynet.be/mpfa/
Access Memorandum - http://memoaccess.free.fr
## Réponses souhaitées sur ce forum, merci. ##
--------------------------------------------------