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

Access Discussion :

Lenteur Access // type de base .mdb !


Sujet :

Access

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 157
    Points : 80
    Points
    80
    Par défaut Lenteur Access // type de base .mdb !
    Bonjour,

    J’ai une base de données qui est composé de deux parties :
    a) la partie applicative (installé sur 5 postes clients)
    b) Les données dans le fichier .mdb qui lui est placée sur un "serveur" dans un réseau local qui et composé de 5 postes.

    La base contient environ 25000 enregistrements clients avec des nombreuses tables, etc.....

    Le formulaire de recherche client "FrmRechercheDossier" nous relentie énormement le réseau, car mal conçu par une société tiers, et je souhaite apporter une modification pour accellerer notre travail.

    Voici le code du "Sub Form_Open(Cancel As Integer)"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub Form_Open(Cancel As Integer)
     
     
      cboDossier.RowSource = "SELECT [DOSSIER].[DOS_ID], [DOSSIER].[DOS_EMPR_NOM], [DOSSIER].[DOS_EMPR_PRENOM]," _
                              & " [DOSSIER].[DOS_VILLE],[DOSSIER].[DOS_ID],[DOSSIER].[DOS_DATE_PHASE1]" _
                              & " FROM DOSSIER ORDER BY [DOSSIER].[DOS_EMPR_NOM], [DOSSIER].[DOS_EMPR_PRENOM]"
     
     
    End Sub
    puis le code de la comboBox qui nous sert d'entrée de clavier ...


    Combo Box
    Raw source Type : Table/Query

    Raw Source:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT DOSSIER.DOS_ID, DOSSIER.DOS_EMPR_NOM, DOSSIER.DOS_EMPR_PRENOM, DOSSIER.DOS_VILLE, DOSSIER.DOS_DATE_PHASE1 FROM DOSSIER ORDER BY DOSSIER.DOS_EMPR_NOM;
    Ma question, il y à t'il un moyen de booster la recherche en modifiant le code, et si oui, par quel moyen?
    Eventuellement par cette méthode : http://access.developpez.com/faq/?page=Concept#ReqLimit ?

    Remarque, je ne suis pas un pro du vba!

    Merci d'avance pour votre aide.

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Si je lit bien ton code, il y a DEUX fois l'affectation de la source de donnée. Une fois dans le Open (cdoDossier est ta combobox) et une fois au niveau de la combo elle même.

    Si c'est bien le cas Access fais 2 fois la recherche donc j'enléverai la rawsource de la combobox.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 157
    Points : 80
    Points
    80
    Par défaut
    Bonjour marot_r,
    Merci pour ton aide.

    O.K. J'ai enlève la rawsource de la combobox.

    A part ça peut on encore améliorer la vitèsse de recherche?

    Je pense qu'un des problèmes de lenteur c'est que les 25000 enregistrements sont placée dans dans la combobox!

    Habituellement ont clique sur la flêche à droite de la combobox, pour afficher une partie des enregistrements (nom client, etc.), tout en tappent le nom du client, et au fur à mésure la combox se rafraîchit, mais comme il y à 25000 enregistrements cela prend du temps ...

    Seraît t'il pas mieux d'avoir des mini requettes limitent les nombre de retour par example sur 20 enregistrements (proche du texte saisi), à chaque fois qu'on appuis sur une touche ?

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Pas que je sache en automatique mais tu pourrai peut-être faire deux liste de saisie :

    1 Liste initiale : 26 lettres
    1 liste complète qui ne donne que les noms qui commencent par l'initiale en gérant le RawSource en fonction de la liste initiale.

    Ou réduire le nombre d'enr, en fonction de l'utilisateur. Tout le monde accède à tous les enr ? Si ce n'est pas le cas, vois si tu peux faire tri.

    A part cela, peux-tu 'upgrader' la mémoire de tes machines ? Access charge un max de chose en mémoire donc si tu as plus de mémoire vive ca va plus vite.

    En fonction du cout de la RAM ca peut être plus rentable que de passer des heures à modifier ton appli. Fais le rapport entre ton prix à l'heure (+ celui perdu par tes collègues) et compare le à une mise à niveau de tes PC.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Membre habitué
    Inscrit en
    Septembre 2005
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 158
    Points : 163
    Points
    163
    Par défaut
    oui mais bien souvant en entreprise, on ne décide pas soit même de la qualité des machines dont on dispose et puis franchement c'est bien plus rentable d'optimiser une base de données pour l'utilisateur, car ça lui évitera de reproduire les mêmes erreurs...
    Et puis augmenter la RAM du PC juste pour une base de donnée ACCESS qui n'a que 25 000 enregistrements , il va falloir inverstir dans un calculateur pour 100 000 enregistrements

    Mais la solution avec les premières lettres de mots pour alléger la combobox me permet très pertinente

  6. #6
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    marot_r a ecrit:
    Si je lit bien ton code, il y a DEUX fois l'affectation de la source de donnée. Une fois dans le Open (cdoDossier est ta combobox) et une fois au niveau de la combo elle même.

    Si c'est bien le cas Access fais 2 fois la recherche donc j'enléverai la rawsource de la combobox.
    1/Je dirais meme plus; il faut enlever la recherche et le remplissage de la combo à l'ouverture du form;ce n'est pas consiller pour une optimisation de l'appli. il est mieux de faire la recherche une fois le form ouvert.
    2/
    A part cela, peux-tu 'upgrader' la mémoire de tes machines ? Access charge un max de chose en mémoire donc si tu as plus de mémoire vive ca va plus vite.
    suis d'accord avec ça;
    LeScandinave a ecrit:
    Et puis augmenter la RAM du PC juste pour une base de donnée ACCESS qui n'a que 25 000 enregistrements
    suis pas d'accord: on cherche tous les moyens pour augmenter la vitesse de traitement.cela depend donc de ce que l'on veut.
    3/ Didier100 a ecrit:
    O.K. J'ai enlève la rawsource de la combobox.
    cela signifie peut etre, je dis bien peut etre que ta BD n'est pas en ".mde"
    si c'etait le cas sache que les ".mde" sont de loin plus rapide que les ".mdb".
    @+

  7. #7
    Membre habitué
    Inscrit en
    Septembre 2005
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 158
    Points : 163
    Points
    163
    Par défaut
    Citation Envoyé par Keita
    LeScandinave a ecrit:
    Et puis augmenter la RAM du PC juste pour une base de donnée ACCESS qui n'a que 25 000 enregistrements
    suis pas d'accord: on cherche tous les moyens pour augmenter la vitesse de traitement.cela depend donc de ce que l'on veut.
    ´bon, je vais modérer mes propos ,
    on va dire que pour une base optimisée jusqu'au dernier de ses détails et qui reste lente, cela est une solution à envisager, voire à conseiller.
    Mais tant que la base reste non optimisée ou peu optimisée, cela n'a pas de sens et surtout c'est une solution trop facile pour le programmeur et coûteuse pour le client.

    Et tout de même, mettre 25000 enregistrements dans une combobox, c'est un peu de l'abus, surtout vu le nombre de colonnes dans la combobox

  8. #8
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    par curiosité (lol) j'ai testé une combo sur un champs de type string * 50 et les performances sont excellentes ... sur ma machine flambant neuve de 2002 ...

    toujours par curiosité j'ai supprimé l'index ... et ça reste vraiment rapide ...

    le code de remplissage ...

    Citation Envoyé par Code
    Option Explicit


    Public Function FillTab(ByVal strLong As Integer, ByVal NbTab As Long)

        Dim i As Long
        Dim j As Integer
        Dim strTemp As String
        
        On Error Resume Next
        
        Randomize
        
        For i = 1 To NbTab
            For j = 1 To strLong
               strTemp = strTemp & Chr(Int(Rnd * 25) + 65)
            Next j
            DoCmd.RunSQL "INSERT INTO TblCombo VALUES ('" & strTemp & "') ;"
            strTemp = vbNullString
        Next i
        
        Debug.Print "job done."

    End Function
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  9. #9
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    LeScandinave a ecrit:
    Et tout de même, mettre 25000 enregistrements dans une combobox, c'est un peu de l'abus, surtout vu le nombre de colonnes dans la combobox
    Tout à fait d'accord;j'en vois vraiment vraiment pas l'interet.
    @+

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/10/2008, 12h44
  2. Définir le type de champs d'une base mdb
    Par soso78 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 06/05/2007, 13h21
  3. [Base Access] Objets pour accéder à une base mdb
    Par soso78 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 24/04/2007, 13h16
  4. [C#] Est-il possible d'exploiter une base .mdb sans Access en local ?
    Par doudoustephane dans le forum Accès aux données
    Réponses: 2
    Dernier message: 17/07/2006, 14h50
  5. Réponses: 2
    Dernier message: 05/06/2006, 11h59

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