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

VB 6 et antérieur Discussion :

Optimiser un code d'update d'un fichier dbf et access


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 80
    Par défaut Optimiser un code d'update d'un fichier dbf et access
    Bonsoir a tous,

    Je dois mettre a jour un fichier dbf a partir d'un table access. La table access comporte plus de 2000 records.

    Voici mon code

    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
     
    Set rstResultat1 = dbsbase.Execute("SELECT idClient, CliNom, cliPre, cliAdr1 , cliCp, cliVille from Client")
     
    Do Until rstResultat1.EOF
        frmExport.Caption = "Export Vers CUBIC : Mise à Jour du Client N° " & rstResultat1(0)
        rst.Open "UPDATE " & FilesClient & " SET " & _
                 "C_nom1='" & Left(Replace(rstResultat1(1), "'", "''"), 30) & "'," & _
                 "C_nom2='" & Left(Replace(rstResultat1(2), "'", "''"), 30) & "'," & _
                 "C_adresse='" & Left(Replace(rstResultat1(3), "'", "''"), 30) & "'," & _
                 "C_localite='" & Left(rstResultat1(4) & " " & Replace(rstResultat1(5), "'", "''"), 30) & "'" & _
                 " WHERE cdbl(C_numero)=" & rstResultat1(0) & ";", cnn, , , adCmdText
        rstResultat1.MoveNext
    Loop
    MsgBox "UPDATE Réussi"
    rstResultat1.Close
    Il fonctionne mais met en temps de fou.
    Comment optimiser ce code
    Avez vous une idée
    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    je ne suis pas trés fort sur cette syntaxe pour mettre à jour de cette façon,
    mais je suis étonné que tu ouvres avec rst.Open et que tu ne fermes pas avec un rst.Close en fin de boucle (avant le rstResultat1.MoveNext, par exemple).
    Cela dit, je ne sais pas si cela rendrai le travail plus rapide.

    Salutation
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 80
    Par défaut
    Merci pour ta réponse, je vais essayer mais je suis pas sur que ca ira plus vite

    je ne suis pas trés fort sur cette syntaxe pour mettre à jour de cette façon,
    Comment fais-tu pour mettre a jour un fichier par rapport a une autre table ?

    Merci

  4. #4
    Expert confirmé
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Par défaut
    Citation Envoyé par pobrouwers
    Comment fais-tu pour mettre a jour un fichier par rapport a une autre table ?
    Avec une requête Execution
    puisque ton UPDATE ne renvoie rien, tu n'as pas besoin d'un rst.Open

  5. #5
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Par défaut
    et utilise left$ à la place de left;

    edit :

    J'ignore les possibilités d'access, mais pour moi si on parlait d'algo pure il y a un problème assez énorme dans ton code

    Voici ce que tu fais :

    VB -> ADO -> Base Access -> ADO -> VB
    loop 2000 fois
    VB -> ADO -> Fichier DBF
    do

    Alors est-ce qu'il ne serait pas possible de faire ton update et select en une seule requête ?

    UPDATE fichier,table access SET fichier.champ = table.champ where ...

    Je raisonne dans l'absolu c'est probablement impossible à faire avec ADO.

Discussions similaires

  1. optimisation de code _ génération de fichier *kml
    Par XAR-WP dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 23/05/2012, 11h41
  2. [AC-2003] Code VBA pour importer un fichier Excel dans access
    Par granddebutant dans le forum VBA Access
    Réponses: 5
    Dernier message: 24/01/2012, 14h51
  3. Optimisation de code, génération de fichiers (.txt et .xls)
    Par shadypierre dans le forum VBA Access
    Réponses: 4
    Dernier message: 17/03/2010, 18h06
  4. Réponses: 4
    Dernier message: 09/06/2007, 18h25
  5. Réponses: 8
    Dernier message: 14/09/2006, 16h43

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