1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
|
For Num_Calcul = Debut_Calcul To Fin_Calcul
MySql = ""
If (Num_Calcul <> Affichage_Compteur) Then
If (Tableau_Calculs(P_Voie, Num_Calcul).Nom_Calcul = "") Then GoTo Next_Calcul
End If
' Déclaration pour test sur temps d'execution
Dim Init As Long ' Avant l'execution
Dim Final As Long ' Après l'execution
Dim TpsExec As String ' temps en ms d'execution
Init = GetTickCount
For i = 0 To 10 Step 5
For j = 0 To 4
SDateDebut = CStr(Convert_DateHeure(DateAdd("n", -((j + i) + 1) * Duree_Barre, Date_Enreg_Dern_Selec), DateTimePC_Vers_DateTimeRDB))
SDateFin = CStr(Convert_DateHeure(DateAdd("n", -(j + i) * Duree_Barre, Date_Enreg_Dern_Selec), DateTimePC_Vers_DateTimeRDB))
If (Num_Calcul <> Affichage_Compteur) Then
If (Tableau_Calculs(P_Voie, Num_Calcul).Denominateur <> "") Then
MySql = MySql & "Select sum(" & Tableau_Calculs(P_Voie, Num_Calcul).Nominateur & _
"),sum(" & Tableau_Calculs(P_Voie, Num_Calcul).Denominateur & _
"),count(*) as nb," & MAX_BARRE - (j + i) & " as GRP "
If (Num_Calcul = Pertes_Totales) Then
MySql = MySql & ",sum(" & tableau_cpt_entree_ligne(P_Voie) & ") as c " ' as cpt_entree_ligne "
End If
Else
MySql = MySql & "Select Sum(" & Tableau_Calculs(P_Voie, Num_Calcul).Nominateur & "), " & _
"Count(*) as nb," & MAX_BARRE - (j + i) & " as GRP "
End If
MySql = MySql & "FROM DONNEES where voie='" & SVoie & "' and jour>" & SDateDebut & " and jour <=" & SDateFin & " union "
Else
If (Num_Compteur = 0) Then Num_Compteur = 100
MySql = MySql & "Select sum(C" & Format(Num_Compteur, "0") & "),count(*) as nb," & _
MAX_BARRE - (j + i) & " as GRP FROM DONNEES where voie='" & SVoie & _
"' and jour>" & SDateDebut & " and jour <=" & SDateFin & " union "
End If
Next j
MySql = Mid(MySql, 1, Len(MySql) - 6)
' Modification type de curseur pour optimisation, par DFR le 19/09/06
'REC.Open MySql, BASE_VISUALISATION, adOpenStatic, adLockReadOnly
REC.Open MySql, BASE_VISUALISATION, adOpenForwardOnly, adLockReadOnly
While Not REC.EOF
If IsNull(REC(0)) Then Nominateur = 0 Else Nominateur = REC(0)
If Num_Calcul = Affichage_Compteur Then
Resultats_Voie(REC(2), Num_Calcul).Valeur = Nominateur
Resultats_Voie(REC(2), Num_Calcul).Nb_Enreg = REC(1)
Resultats_Voie(REC(2), Num_Calcul).Denominateur = 1
Resultats_Voie(REC(2), Num_Calcul).Nominateur = Nominateur
Else
If (Tableau_Calculs(P_Voie, Num_Calcul).Denominateur <> "") Then
If IsNull(REC(1)) Then Denominateur = 0 Else Denominateur = REC(1)
Resultats_Voie(REC(3), Num_Calcul).Nominateur = Nominateur
Resultats_Voie(REC(3), Num_Calcul).Denominateur = Denominateur
Resultats_Voie(REC(3), Num_Calcul).Nb_Enreg = REC(2)
If Denominateur <> 0 Then
If (Num_Calcul = Pertes_Totales) Then
Resultats_Voie(REC(3), Num_Calcul).Valeur = 100 * (1 - (Nominateur / Denominateur))
Else
Resultats_Voie(REC(3), Num_Calcul).Valeur = 100 * Nominateur / Denominateur
End If
Else
If (Num_Calcul = Pertes_Totales) Then
If IsNull(REC(1)) Then
Resultats_Voie(REC(3), Num_Calcul).Valeur = 0
Else
Resultats_Voie(REC(3), Num_Calcul).Valeur = 100
End If
If REC(4) = 0 Then Resultats_Voie(REC(3), Num_Calcul).Valeur = 0
Else
Resultats_Voie(REC(3), Num_Calcul).Valeur = 0
End If
End If
Else
Resultats_Voie(REC(2), Num_Calcul).Nominateur = Nominateur
Resultats_Voie(REC(2), Num_Calcul).Nb_Enreg = REC(1)
Resultats_Voie(REC(2), Num_Calcul).Valeur = 0
End If
End If
REC.MoveNext
Wend
REC.Close: MySql = ""
Next i
' Fin de 0 à 21 on fait.
' Fin de test de temps d'execution
Final = GetTickCount
'' Affichage pour test / optimisation, par DFR
'MsgBox (Str(Final - Init) & " ms") |
Partager