IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Temps de traitement d'une requete tres long


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2010
    Messages : 24
    Points : 12
    Points
    12
    Par défaut Temps de traitement d'une requete tres long
    Bonjour je crois que le principale est dit dans mon tres long titre ^^ .
    Je vous explique je suis admin réseau, il y a quelques mois l'on m'a demandé de changer une application vba. Il fallait que je change la base de donnée acces pour une bdd sous sql server.
    J'ai donc du changer petit a petit toutes les requêtes, les connexions... etc.
    Tout à l'air de marcher en revanche le délais d'execution de certaines de mes requêtes sont très long. (en gros je peux attendre 17sec sur sql : 2-3 sec pour accès)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Sub remplir_numero_colisage()
    Dim rs As New ADODB.Recordset
    Dim str As String
    cboNumeroColis.Clear
    str = "select COLNUM from COLIS where left(COLNUM,1) like '" & Left(cboTypeColis.Text, 1) & "%' order by COLNUM"
    rs.Open str, cn_colis, adOpenKeyset, adLockOptimistic, adCmdText
     
    If rs.RecordCount <> 0 Then
        rs.MoveFirst
        '-- MsgBox "la ca bug"
        Do
         If rs.EOF Then Exit Do
            cboNumeroColis.AddItem rs![COLNUM]
            rs.MoveNext
        Loop
     
        '-- fin du bug
        cboNumeroColis.ListIndex = cboNumeroColis.ListCount - 1
    End If
     
    rs.Close
    Set rs = Nothing
    End Sub
    Pour info la table colis de ma base sql fait environs 25000 lignes (env).
    J'ai commenté les lignes (apres avoir fait des tests) ou l'application ramait.

    Merci d'avance pour vos aides

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Si tu ne compares que le 1er caractère alors le Like est une perte de temps. Je le remplacerai par un "=" qui est plus efficace. Ci dessous le code modifié.

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    left(COLNUM,1)= '" & Left(cboTypeColis.Text, 1) & "'

    A+

  3. #3
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2010
    Messages : 24
    Points : 12
    Points
    12
    Par défaut
    Oui merci Marot tu as raison c'était une erreur .
    En revanche je suis malheureusement toujours super long sur cette requête, j'avoue ne pas trop comprendre ... (je suis débutant)
    Je précise que j'ai deja lu pas mal de posts sur le forum et ailleurs , j'ai deja testé ma requête à partir du serveur sql et la requête me prend 1seconde...
    J'ai aussi essayé de changer ma méthode de connexion j'ai testé oledb et odbc.
    En vain ...

  4. #4
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2010
    Messages : 24
    Points : 12
    Points
    12
    Par défaut
    Bon j'ai un peu lu de documentation encore et encore ^^ ,

    et j'ai testé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    rs.CursorLocation = adUseClient
    str = "select COLNUM from COLIS where left(COLNUM,1) = '" & Left(cboTypeColis.Text, 1) & "' order by COLNUM"
    rs.Open str, cn_colis, adOpenStatic, adLockOptimistic, adCmdText
    En mettant le curseur à partir de mon pc client et passant en adOpenStatic l'execution de la requete est 10 fois plus rapide ...
    J'aurais aimé avoir votre avis avant de remettre cette appli en production?

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Personnellement je ne me sert que des tables liées ce qui évite d'avoir à gérer les histoires de connexion, curseur et autre plomberie donc je ne sais pas.

    A+

  6. #6
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2010
    Messages : 24
    Points : 12
    Points
    12
    Par défaut
    Cela fait quelques jours que l'appli fonctionne en test ... je pense que je peux mettre ce probleme en "résolu" .
    Merci de votre aide .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 06/02/2007, 15h19
  2. Temps de réalisation d'une requete avant lancement
    Par jcachico dans le forum Outils
    Réponses: 6
    Dernier message: 12/04/2006, 15h27
  3. temps de reponse d'une requetes ?
    Par Melvine dans le forum Oracle
    Réponses: 1
    Dernier message: 27/03/2006, 16h54
  4. [Stratégie] Mesurer le temps d'exécution d'une requête
    Par nice dans le forum Général Java
    Réponses: 5
    Dernier message: 29/01/2006, 17h53
  5. Réponses: 9
    Dernier message: 20/06/2005, 12h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo