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 :

Récupérer le nombre d'enregistrements ajoutés après une make-table ou append query [AC-2007]


Sujet :

VBA Access

  1. #1
    Candidat au Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2012
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Récupérer le nombre d'enregistrements ajoutés après une make-table ou append query
    Bonjour à tous !

    Ma toute première contribution sur un forum de développement, j'espère ne pas faire trop d'erreurs, soyez indulgents.

    J'ai un besoin particulier sous Access 2007. J'aimerais automatiser un traitement dans ma base de données que je dois faire tourner régulièrement. Au sein de ce traitement, j'ai une requête Append que je souhaite lancer et relancer jusqu'à ce qu'elle n'ajoute plus aucun enregistrement à ma table avant de passer à la suite du traitement.

    Quand j'effectue le traitement à la main, c'est facile, il me suffit d'avoir les avertissements activés et d'attendre d'avoir le message : "Vous allez ajouter 0 enregistrements à la table LIENS_PF" ; mais comment récupérer le "0" de ce message en VBA après avoir lancé la requête ?

    Pour des raisons de performances, je souhaiterais ne pas avoir à lancer l'équivalent de ma requête Append en sélection pour calculer à priori le nombre d'enregistrements (je sais, je suis un peu pénible...).

    Merci d'avance pour vos réponses !

    PS : un petit laius sur le traitement peu orthodoxe que j'effectue (lancer et relancer une requête Append jusqu'à ce que la table source ne soit plus modifiée). En fait, j'exporte de MSProject une liste de tâches avec des liens de prédécesseurs / successeurs. J'aimerais avoir pour toutes les tâches, une table qui contient l'ensemble des successeurs ou des prédécesseurs de la tâche (en prenant en compte la transitivité, c'est à dire que le prédécesseur du prédécesseur de ma tâche est également un prédécesseur de ma tâche). Pour cela, j'ai ma table LIENS_PF (champs PRED, SUCC) que je croise avec elle même ; et j'appende directement à cette table les enregistrements calculés qui n'y étaient pas déjà. Cela permet de "propager" les liens. Quand il n'y a plus rien à propager, je peux arrêter le traitement.

  2. #2
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,

    Regarde Comment récupérer le nombre d'enregistrements concernés après le lancement d'une requête

    Concernant la méthode DAO.
    La méthode Execute d'un objet DAO.Database accepte en premier argument le nom d'une requête action, ou du code SQL.
    Le plus souvent on met dbFailOnError en deuxième argument pour lever une erreur, car la méthode Execute ne lève pas toujours une erreur.
    Voir l'aide en ligne.

    A+

  3. #3
    Candidat au Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2012
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Hé bien merci beaucoup pour ta réactivité ; la propriété proposée en lien fonctionne à merveille pour ce que je veux faire.

    Juste un petit bémol, j'ai l'impression qu'elle fonctionne bien avec la méthode
    db.Execute SQL, option
    mais pas avec doCmd.RunSQL. J'ai donc dû revoir une partie de mon code (passer en db.Execute pour des make-table query nécessite de supprimer la table si elle existe auparavant).

    En tout cas, encore merci.

  4. #4
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,

    Je confirme que db.Execute et doCmd.RunSQL fonctionnent différemment.
    Seul db.Execute modifie db.RecordsAffected.

    db.Execute fait partie de la bibliothèque DAO, laquelle se situe au niveau du moteur de base de données (accès et manipulation de données sans avoir besoin d'Access).

    Avec doCmd.RunSQL on passe par le modèle objet Access.
    On est un niveau (une couche) au dessus du moteur de base de données.

    passer en db.Execute pour des make-table query nécessite de supprimer la table si elle existe auparavant
    Je ne connais pas de moyen de contourner cela.

    A+

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

Discussions similaires

  1. Réponses: 20
    Dernier message: 09/03/2011, 07h59
  2. Réponses: 13
    Dernier message: 11/02/2011, 17h38
  3. Réponses: 9
    Dernier message: 14/10/2005, 13h46
  4. Réponses: 2
    Dernier message: 12/10/2005, 15h15
  5. URGENT - Nombre d'enregistrements différents dans une table
    Par Jeankiki dans le forum Bases de données
    Réponses: 6
    Dernier message: 11/08/2004, 15h51

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