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

IHM Discussion :

VB ACCESS reduire le temps d'execution


Sujet :

IHM

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 31
    Points : 22
    Points
    22
    Par défaut VB ACCESS reduire le temps d'execution
    bonjour,

    je dois inserer des valeur dans une table apres avoir fait des choix dans un formulaire. Les possibilités de choix sont nombreux (quasiment toutes les varibles. Je debute en VB ACCESS et j'aimerais savoir comment réduire le temps d'execution, adapter mon programme.

    merci d'avance,

    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
    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
    Dim db As DAO.Database
        Dim base As DAO.Recordset
     
    MaTable = "base_cnrs"
     
        'requete sql
        sSQL = "SELECT Nocontrat, andebut, Duree, Intituleunite, DSLAB, RegLAB, RaisonSociale, CodeNAF, Secteur_Activite from " & MaTable
        'tu definis ton recordset qui va contenir le resultat de la requete
        Set base = db.OpenRecordset(sSQL)
        If Not base.EOF Then
            'tant qu'il n'est pas vide
            Do While Not base.EOF
                'recuperation des valeurs
                noC = base.Fields("Nocontrat").Value
                nomL = base.Fields("Intituleunite").Value
                'remplace les ' par un espace afin que le programme distingue bien la chaine
                nomL = Replace(nomL, "'", " ")
                an = base.Fields("andebut").Value
                ds = base.Fields("DSLAB").Value
                reg = base.Fields("RegLAB").Value
                rais = base.Fields("RaisonSociale").Value
                rais = Replace(rais, "'", " ")
                act = base.Fields("Secteur_Activite").Value
     
                '//POSSIBILITES D'EXTRACTIONS{
     
                'si seulement un numero de contrat est saisi
                If noC = num_contrat And coche.Value = True Then
                    an = base.Fields("andebut").Value
                    tps = base.Fields("Duree").Value
                    nomL = base.Fields("Intituleunite").Value
                    ds = base.Fields("DSLAB").Value
                    reg = base.Fields("RegLAB").Value
                    rais = base.Fields("RaisonSociale").Value
                    rais = Replace(rais, "'", " ")
                    naf = base.Fields("CodeNAF").Value
                    act = base.Fields("Secteur_Activite").Value
                    'requete d insertion
                    sSQLInsert = "INSERT INTO " & rep & " ([Nocontrat],[andebut],[Duree],[Intituleunite],[DSLAB],[RegLAB],[RaisonSociale],[CodeNAF],[Secteur_Activite]) VALUES ( '" & noC & "','" & an & "','" & tps & "','" & nomL & "','" & ds & "','" & reg & "','" & rais & "','" & naf & "','" & act & "')"
                    'execution de la requete insert
                    db.Execute sSQLInsert, dbFailOnError
                    Exit Sub
                    End If
     
                '//SEULEMENT UN CRITERE
                'juste periode
                If Not IsNull(date_debut) And Not IsNull(date_fin) And IsNull(nom_lab) And IsNull(ds_lab) And IsNull(reg_lab) And IsNull(rai_soc) And IsNull(sec_act) Then
                    If Coche_per.Value = True And an >= date_debut And an <= date_fin Then
                            noC = base.Fields("Nocontrat").Value
                            tps = base.Fields("Duree").Value
                            nomL = base.Fields("Intituleunite").Value
                            'remplace les ' par un espace afin que le programme distingue bien la chaine
                            ds = base.Fields("DSLAB").Value
                            reg = base.Fields("RegLAB").Value
                            rais = base.Fields("RaisonSociale").Value
                            naf = base.Fields("CodeNAF").Value
                            act = base.Fields("Secteur_Activite").Value
                            'requete d'insertion
                            sSQLInsert = "INSERT INTO " & rep & " ([Nocontrat],[andebut],[Duree],[Intituleunite],[DSLAB],[RegLAB],[RaisonSociale],[CodeNAF],[Secteur_Activite]) VALUES ( '" & noC & "','" & an & "','" & tps & "','" & nomL & "','" & ds & "','" & reg & "','" & rais & "','" & naf & "','" & act & "')"
                            'execution de la requete insert
                            db.Execute sSQLInsert, dbFailOnError
                    End If
                End If
     
                'juste labo
                If Not IsNull(nom_lab) And IsNull(rai_soc) And IsNull(sec_act) And IsNull(date_debut) And IsNull(date_fin) Then
                    If nomL = nom_lab And Coche_per.Value = False Then
                        noC = base.Fields("Nocontrat").Value
                        an = base.Fields("andebut").Value
                        tps = base.Fields("Duree").Value
                        ds = base.Fields("DSLAB").Value
                        reg = base.Fields("RegLAB").Value
                        rais = base.Fields("RaisonSociale").Value
                        naf = base.Fields("CodeNAF").Value
                        act = base.Fields("Secteur_Activite").Value
                        'requete d'insertion
                        sSQLInsert = "INSERT INTO " & rep & " ([Nocontrat],[andebut],[Duree],[Intituleunite],[DSLAB],[RegLAB],[RaisonSociale],[CodeNAF],[Secteur_Activite]) VALUES ( '" & noC & "','" & an & "','" & tps & "','" & nomL & "','" & ds & "','" & reg & "','" & rais & "','" & naf & "','" & act & "')"
                        'execution de la requete insert
                        db.Execute sSQLInsert, dbFailOnError
                    End If
                End If
     
    base.MoveNext
            Loop
        End If
        'ferme/vide tout
        base.Close
        Set base = Nothing
        db.Close
        End If
    End Sub

  2. #2
    Membre chevronné
    Avatar de gwinyam
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 162
    Points : 2 015
    Points
    2 015
    Par défaut
    Je suis pas sûr qu'un certain nombre d'instructions soient nécessaire.

    Tu répètes à chaque fois la récupération des données si j'ai bien compris ton script.

    A mon avis, tu pourrais te contenter de ne garder que la première phase de récupération et retirer toutes les autres puisque tu y répètes les mêmes instructions sans changement.

    Cela ne changera pas grand chose à la vitesse d'exécution, mais bon, ça sera ça de pris et ton script gagnera en clarté.

    Je dirais que ce script serait un bon début:
    Code VBA : 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
    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
     
    Dim db As DAO.Database
        Dim base As DAO.Recordset
     
    MaTable = "base_cnrs"
     
        'requete sql
        sSQL = "SELECT Nocontrat, andebut, Duree, Intituleunite, DSLAB, RegLAB, RaisonSociale, CodeNAF, Secteur_Activite from " & MaTable
        'tu definis ton recordset qui va contenir le resultat de la requete
        Set base = db.OpenRecordset(sSQL)
        If Not base.EOF Then
            'tant qu'il n'est pas vide
            Do While Not base.EOF
                'recuperation des valeurs
                noC = base.Fields("Nocontrat").Value
                nomL = base.Fields("Intituleunite").Value
                nomL = Replace(nomL, "'", " ")
                an = base.Fields("andebut").Value
                ds = base.Fields("DSLAB").Value
                reg = base.Fields("RegLAB").Value
                rais = base.Fields("RaisonSociale").Value
                rais = Replace(rais, "'", " ")
                act = base.Fields("Secteur_Activite").Value
     
                '//POSSIBILITES D'EXTRACTIONS{
     
                'si seulement un numero de contrat est saisi
                If noC = num_contrat And coche.Value = True Then
                    tps = base.Fields("Duree").Value
                    naf = base.Fields("CodeNAF").Value
                    'requete d insertion
                    sSQLInsert = "INSERT INTO " & rep & " ([Nocontrat],[andebut],[Duree],[Intituleunite],[DSLAB],[RegLAB],[RaisonSociale],[CodeNAF],[Secteur_Activite]) VALUES ( '" & noC & "','" & an & "','" & tps & "','" & nomL & "','" & ds & "','" & reg & "','" & rais & "','" & naf & "','" & act & "')"
                    'execution de la requete insert
                    db.Execute sSQLInsert, dbFailOnError
                    Exit Sub
                    End If
     
                '//SEULEMENT UN CRITERE
                'juste periode
                If Not IsNull(date_debut) And Not IsNull(date_fin) And IsNull(nom_lab) And IsNull(ds_lab) And IsNull(reg_lab) And IsNull(rai_soc) And IsNull(sec_act) Then
                    If Coche_per.Value = True And an >= date_debut And an <= date_fin Then
                            noC = base.Fields("Nocontrat").Value
                            tps = base.Fields("Duree").Value
                            naf = base.Fields("CodeNAF").Value
                            'requete d'insertion
                            sSQLInsert = "INSERT INTO " & rep & " ([Nocontrat],[andebut],[Duree],[Intituleunite],[DSLAB],[RegLAB],[RaisonSociale],[CodeNAF],[Secteur_Activite]) VALUES ( '" & noC & "','" & an & "','" & tps & "','" & nomL & "','" & ds & "','" & reg & "','" & rais & "','" & naf & "','" & act & "')"
                            'execution de la requete insert
                            db.Execute sSQLInsert, dbFailOnError
                    End If
                End If
     
                'juste labo
                If Not IsNull(nom_lab) And IsNull(rai_soc) And IsNull(sec_act) And IsNull(date_debut) And IsNull(date_fin) Then
                    If nomL = nom_lab And Coche_per.Value = False Then
                        noC = base.Fields("Nocontrat").Value
                        tps = base.Fields("Duree").Value
                        naf = base.Fields("CodeNAF").Value
                        'requete d'insertion
                        sSQLInsert = "INSERT INTO " & rep & " ([Nocontrat],[andebut],[Duree],[Intituleunite],[DSLAB],[RegLAB],[RaisonSociale],[CodeNAF],[Secteur_Activite]) VALUES ( '" & noC & "','" & an & "','" & tps & "','" & nomL & "','" & ds & "','" & reg & "','" & rais & "','" & naf & "','" & act & "')"
                        'execution de la requete insert
                        db.Execute sSQLInsert, dbFailOnError
                    End If
                End If
     
    base.MoveNext
            Loop
        End If
        'ferme/vide tout
        base.Close
        Set base = Nothing
        db.Close
        End If
    End Sub

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 31
    Points : 22
    Points
    22
    Par défaut re :tps execution
    Merci d'avoir répondu,

    il est vrai que cela rend mon code bcp plus clair. Mais cela ne réduit pas le tps d'execution.
    Ma base de données comprend 50000 enregistrements. l'execution peut prendre 3 à 4 minutes...

  4. #4
    Membre chevronné
    Avatar de gwinyam
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 162
    Points : 2 015
    Points
    2 015
    Par défaut
    Au delà des modifs que je t'ai proposé, je ne vois pas comment accélérer le script...

    Tu ne fais apparemment pas d'action inutile ou pouvant être optimisées. Je crains que tu ne puisses faire mieux sur ce coup là.

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 31
    Points : 22
    Points
    22
    Par défaut re :tps execution
    ok ben merci !

Discussions similaires

  1. reduire le temps d'execution
    Par farid0031 dans le forum C++Builder
    Réponses: 4
    Dernier message: 29/06/2009, 11h42
  2. limit et temps d'execution avec oracle et PHP
    Par dor_boucle dans le forum Oracle
    Réponses: 20
    Dernier message: 10/12/2005, 14h31
  3. Temps d'execution d'une requête
    Par Maglight dans le forum Bases de données
    Réponses: 3
    Dernier message: 27/01/2005, 08h38
  4. [VB.NET] Temps d'éxécution d'une page...
    Par Webman dans le forum ASP.NET
    Réponses: 3
    Dernier message: 04/06/2004, 12h20
  5. Connaitre le temps d'execution d'un pgm ?
    Par yacinechaouche dans le forum C
    Réponses: 7
    Dernier message: 27/01/2003, 20h57

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