Comment optimiser ce bout de code pour une exécution plus rapide
Résolu
basthed
Messages postés
11
Statut
Membre
-
yg_be Messages postés 24281 Statut Contributeur -
yg_be Messages postés 24281 Statut Contributeur -
Bonjour j’exécute ce bout de code qui marche bien mais trop lent est ce qu'il y'aurai un moyen de l'écrire pour un résultat plus rapide?
Private Sub RefreshQuery() Child29!TXT_FILTRE_TRANSPO2 = "" Child29!TXT_NB_MAILS.Value = 0 Dim SQL As String Dim SQLWhere As String ' cette variable permet de s'assurer qu'une selection est active avant d'effectuer la requete Dim CompteurSelections As Integer CompteurSelections = 0 If (Me.chkClient) And (Me.cmbRechClient.ListIndex <> -1) Then CompteurSelections = CompteurSelections + 1 End If If (Me.chkTransporteur) And (Me.cmbTransporteur <> -1) Then CompteurSelections = CompteurSelections + 1 End If If (Me.chkCodEnlevement) And (Me.cmbCodEnlevement.ListIndex <> -1) Then CompteurSelections = CompteurSelections + 1 End If If (Me.chkCodLivraison) And (Me.cmbCodLivraison.ListIndex <> -1) Then CompteurSelections = CompteurSelections + 1 End If If (Me.chkPaysEnlev) And (Me.cmbPaysEnlev.ListIndex <> -1) Then CompteurSelections = CompteurSelections + 1 End If If (Me.chkPaysLiv) And (Me.cmbPaysLiv.ListIndex <> -1) Then CompteurSelections = CompteurSelections + 1 End If If (Me.chkEnlevDateDebut) And (Me.txtEnlevDateDebut.Value <> "") Then CompteurSelections = CompteurSelections + 1 End If If (Me.chkEnlevDateDebut) And (Me.txtEnlevDateFin.Value <> "") Then CompteurSelections = CompteurSelections + 1 End If If (Me.chkLivDateDebut) And (Me.txtLivDateDebut.Value <> "") Then CompteurSelections = CompteurSelections + 1 End If If (Me.chkLivDateDebut) And (Me.txtLivDateFin.Value <> "") Then CompteurSelections = CompteurSelections + 1 End If If (Me.chkUtilisateur) And (Me.cmbRechUtilisateur.ListIndex <> -1) Then CompteurSelections = CompteurSelections + 1 End If If CompteurSelections > 0 Then SQL = "SELECT * FROM [Liste_par_client_R] where [Liste_par_client_R].[No Client] <> 0 " If (Me.chkClient) And (Me.cmbRechClient.ListIndex <> -1) Then SQL = SQL & " And [Liste_par_client_R].[No Client] = " & Me.cmbRechClient & "" End If If (Me.chkTransporteur) And (Me.cmbTransporteur <> -1) Then SQL = SQL & " And [Liste_par_client_R].[No Transporteur] = " & Me.cmbTransporteur & "" End If If (Me.chkCodEnlevement) And (Me.cmbCodEnlevement.ListIndex <> -1) Then SQL = SQL & " And [Liste_par_client_R].[EnlevCode] = " & Me.cmbCodEnlevement & "" End If If (Me.chkCodLivraison) And (Me.cmbCodLivraison.ListIndex <> -1) Then SQL = SQL & " And [Liste_par_client_R].[LivCode] = " & Me.cmbCodLivraison & "" End If If (Me.chkPaysEnlev) And (Me.cmbPaysEnlev.ListIndex <> -1) Then SQL = SQL & " And [Liste_par_client_R].[EnlevPays] = " & "'" & Me.cmbPaysEnlev & "'" & "" End If If (Me.chkPaysLiv) And (Me.cmbPaysLiv.ListIndex <> -1) Then SQL = SQL & " And [Liste_par_client_R].[LivPays] = " & "'" & Me.cmbPaysLiv & "'" & "" End If If (Me.chkEnlevDateDebut) And (Me.txtEnlevDateDebut.Value <> "") Then SQL = SQL & " And [Liste_par_client_R].[EnlevDate] >= DateValue('" & Me.txtEnlevDateDebut & "')" & "" End If If (Me.chkEnlevDateDebut) And (Me.txtEnlevDateFin.Value <> "") Then SQL = SQL & " And [Liste_par_client_R].[EnlevDate] <= DateValue('" & Me.txtEnlevDateFin & "')" & "" End If If (Me.chkLivDateDebut) And (Me.txtLivDateDebut.Value <> "") Then SQL = SQL & " And [Liste_par_client_R].[LivDate] >= DateValue('" & Me.txtLivDateDebut & "')" & "" End If If (Me.chkLivDateDebut) And (Me.txtLivDateFin.Value <> "") Then SQL = SQL & " And [Liste_par_client_R].[LivDate] <= DateValue('" & Me.txtLivDateFin & "')" & "" End If If (Me.chkUtilisateur) And (Me.cmbRechUtilisateur.ListIndex <> -1) Then SQL = SQL & " And [Liste_par_client_R].[Utilisateur] = '" & Me.cmbRechUtilisateur & "'" End If SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1)) SQL = SQL & " order by [EnlevDate] desc;" End If Me.lblStats.Caption = DCount("*", "Liste_par_client_R") 'Me.lblStats.Caption = DCount("*", "Liste_par_client_R", SQLWhere) & " / " & DCount("*", "Liste_par_client_R") ' MsgBox "requete: " & SQL Me!Child29.Form.RecordSource = SQL End Sub
A voir également:
- Comment optimiser ce bout de code pour une exécution plus rapide
- Optimiser son pc - Accueil - Utilitaires
- Code ascii - Guide
- Acces rapide - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code puk bloqué - Guide
2 réponses
bonjour, c'est peut-être la requête qui prend trop de temps.
le temps dépend-il des sélections faites?
peux-tu récupérer la requête SQL et l'exécuter à la main?
je ne comprends pas pourquoi tu fais tous ces tests deux fois, mais cela ne devrait pas influencer le temps d'exécution.
le temps dépend-il des sélections faites?
peux-tu récupérer la requête SQL et l'exécuter à la main?
je ne comprends pas pourquoi tu fais tous ces tests deux fois, mais cela ne devrait pas influencer le temps d'exécution.