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 :

[Access] Tâches en arriere plan


Sujet :

Access

  1. #1
    Membre du Club Avatar de mpascolo
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 64
    Points : 52
    Points
    52
    Par défaut [Access] Tâches en arriere plan
    Bonjour a tous,

    Je développe actuellement un petit logiciel pour un service sur Access.

    J'ai un tout petit souci à l'ouverture de mon appli. En effet, je fais une petite verification sur la plus grosse table à l'ouverture de mon 1er formulaire (FrmMenuPrincipal)

    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
    Dim rst As Recordset
    Dim db As Database
    Dim sql As String
    Dim i, n As Integer
     
    sql = "SELECT * FROM DOCUMENT"
     
    Set db = CurrentDb
     
    Set rst = db.OpenRecordset(sql, dbOpenForwardOnly, dbReadOnly)
     
    While Not rst.EOF 
     
    n = rst.Fields(0)
     
    i = DCount("*", "MONTANTBUDGET", "MONTANTBUDGET.NumDocument = " & n)
     
    If i = 0 Then
        db.Execute "DELETE * FROM DOCUMENT WHERE DOCUMENT.NumDocument = " & n & ";"
    End If
     
    rst.MoveNext
    Wend
    Rien de difficile. Cependant, cela prend de + en + de temps (logique ... 6 à 7 secondes pour le moment). Je souhaiterais effectuer cette tâche en arriere plan pour que l'utilisateur puisse continuer à utiliser l'application en même temps et ne soit pas bloqué ...

    Est ce possible ? Est ce que qq'un aurait une solution ?

    Merci d'avance et a bientot ..
    Merci a tout le monde pour ce travail fantastique sur ce site !

    Mon site : http://www.liguepes.com

  2. #2
    Membre habitué
    Inscrit en
    Juin 2006
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 162
    Points : 197
    Points
    197
    Par défaut Optimiser
    Et si tu remplace ton traitement par une simple requête??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    docmd.runsql "DELETE DISTINCTROW DOCUMENT.* FROM DOCUMENT LEFT JOIN MONTANTBUDGET ON DOCUMENT.NumDocument  = MONTANTBUDGET.NumDocument WHERE (((MONTANTBUDGET.NumDocument ) Is Null));"
    A+

  3. #3
    Membre du Club Avatar de mpascolo
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 64
    Points : 52
    Points
    52
    Par défaut
    Que fais exactement ta requête ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    docmd.runsql "DELETE DISTINCTROW DOCUMENT.* FROM DOCUMENT LEFT JOIN MONTANTBUDGET ON DOCUMENT.NumDocument  = MONTANTBUDGET.NumDocument WHERE (((MONTANTBUDGET.NumDocument ) Is Null));"
    Je souhaite effacer tous les documents qui n'ont aucune ligne de MontantBudget ...

    De +, cela génère un message type "vous allez supprimer 1 enregistrement ... bla bla" qui est un peu embêtant pour les utilisateurs ... Est il possible d'eviter l'affichage de ce message ?
    Merci a tout le monde pour ce travail fantastique sur ce site !

    Mon site : http://www.liguepes.com

  4. #4
    Membre régulier
    Inscrit en
    Août 2006
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 82
    Points : 81
    Points
    81
    Par défaut
    Oui tu peux l'enlever ce msg ... mais faudrait que je retrouve comment

  5. #5
    Membre du Club Avatar de mpascolo
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 64
    Points : 52
    Points
    52
    Par défaut
    Non pour ça, j'ai trouvé ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.Setwarnings false
    Merci quand même ...
    Et pour la requête ? Je l'ai testé et elle a l'air de fonctionner mais j'aimerais quand même etre certain qu'elle fasse ce que je souhaite et qu'elle n"efface pas des données importantes ...
    Merci a tout le monde pour ce travail fantastique sur ce site !

    Mon site : http://www.liguepes.com

  6. #6
    Membre régulier
    Inscrit en
    Août 2006
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 82
    Points : 81
    Points
    81
    Par défaut
    Sinon pourquoi tu delete pas directement de ton recordset avec le rs.delete ?
    La il te demandera pas de confirmation pour effacer.
    Par contre je sais pas si ça va aussi prendre du temps

  7. #7
    Membre du Club Avatar de mpascolo
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 64
    Points : 52
    Points
    52
    Par défaut
    mon Recordset ne contient pas la bonne requête ...
    Merci a tout le monde pour ce travail fantastique sur ce site !

    Mon site : http://www.liguepes.com

  8. #8
    Membre régulier
    Inscrit en
    Août 2006
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 82
    Points : 81
    Points
    81
    Par défaut
    Bah crée en un autre qui contient la bonne requete

  9. #9
    Membre habitué
    Inscrit en
    Juin 2006
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 162
    Points : 197
    Points
    197
    Par défaut
    salut je reviens à ton code
    En lisant ton code tu veux supprimer les documents qui n'ont pas de budgets
    c'est pourquoi je te propose cette requête simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    DoCmd.SetWarnings False  'Pour désactiver le message d'avertissement d'access
     
     
    Docmd..runsql "DELETE DISTINCTROW DOCUMENT.* FROM DOCUMENT LEFT JOIN MONTANTBUDGET ON DOCUMENT.NumDocument  = MONTANTBUDGET.NumDocument "
     
    DoCmd.SetWarnings True ''Pour activer le message d'avertissement d'access

    Bon courage

  10. #10
    Membre du Club Avatar de mpascolo
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 64
    Points : 52
    Points
    52
    Par défaut
    Merci, c'est vraiment ce que je souhaitais. Je gagne enormement de temps avec vos requêtes.

    Encore qques mois de données dans ma base et je passais 1 minutes à attendre à chaque fois que j'ouvrais le menu principal ... LOL

    POURQUOI CHERCHER SIMPLE QUAND ON PEUT FAIRE COMPLIQUE !!!

    Merci à vous et a bientot. ..
    Merci a tout le monde pour ce travail fantastique sur ce site !

    Mon site : http://www.liguepes.com

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 14/06/2007, 23h22
  2. Executer access en arriere plan.
    Par GarsDuCalvados dans le forum Access
    Réponses: 7
    Dernier message: 29/12/2006, 11h42
  3. Installer Interbase en arriere plan depuis delphi
    Par nanaalain dans le forum Bases de données
    Réponses: 9
    Dernier message: 24/11/2003, 14h18
  4. [MFC]arriere plan pour un objet de la classe CStatic
    Par gabriel knight dans le forum MFC
    Réponses: 13
    Dernier message: 28/07/2003, 10h42
  5. j'arrive pas a arreter mon thread d'arriere-plan
    Par ms91fr dans le forum Langage
    Réponses: 6
    Dernier message: 06/06/2003, 21h36

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