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 :

Connaitre le numéro du doublon en cours [AC-2010]


Sujet :

VBA Access

  1. #1
    Membre du Club
    Homme Profil pro
    NC
    Inscrit en
    Janvier 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : NC
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2013
    Messages : 61
    Points : 51
    Points
    51
    Par défaut Connaitre le numéro du doublon en cours
    Bonsoir,

    Sachant que le code suivant me permet de connaitre le nombre de doublons, je voudrai connaitre le numéro du doublon de l'enregistrement en cours.
    Est-ce le premier doublon de la liste, etc ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ' on déclare le curseur 
    dim rs as DAO.recordset
    dim cSQL as string 
    cSQL = "SELECT COUNT(SAV.[APPAREIL_ID]) as nombre FROM SAV WHERE (SAV.[APPAREIL_ID] = 2000);"
     
    ' on l'ouvre et on déclenche la requete 
    Set rs = Currentdb.OpenRecordset (cSQL)

  2. #2
    Membre éclairé Avatar de pyloupylou
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2012
    Messages
    438
    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 : Janvier 2012
    Messages : 438
    Points : 666
    Points
    666
    Par défaut


    qu'entends tu par numéro du doublon ?
    ----
    Il ne s'agit pas de chercher à tout savoir mais de savoir où tout chercher

    merci de penser à
    Au fait.... je ne réponds pas, moi non plus, aux mp

  3. #3
    Membre du Club
    Homme Profil pro
    NC
    Inscrit en
    Janvier 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : NC
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2013
    Messages : 61
    Points : 51
    Points
    51
    Par défaut
    rs.nombre va me sortir le nombre de doublon sur la requête.

    Je voudrai savoir si la position de mon enregistrement en cours correspond au premier doublon, au deuxième doublon de ma table.

    Par exemple Matable contient 2 colonnes (ID_APPAREIL et MONPRIX) avec les données suivantes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ID_APPAREIL        MONPRIX
       2000                 12
       2001                 13
       2000                 14 **
       2001                 15
       2002                 16
       2000                 17
       2000                 15
    Le nombre de doublons dans ID_APPAREIL contenant le chiffre 2000 est de 4
    Mais sur la ligne ** où se trouve MONPRIX=14 le nombre de récurrence depuis le début de la table sera alors de 2.

  4. #4
    Membre du Club
    Homme Profil pro
    NC
    Inscrit en
    Janvier 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : NC
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2013
    Messages : 61
    Points : 51
    Points
    51
    Par défaut
    Finalement j'ai crée une boucle de recherche depuis le début de la table et un déplacement avec l'instruction suivante:

    Comment faire pour que mon formulaire n'affiche pas mon déplacement dans la table car je veux traiter ma fonction en fond de tâche.

  5. #5
    Membre éclairé Avatar de pyloupylou
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2012
    Messages
    438
    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 : Janvier 2012
    Messages : 438
    Points : 666
    Points
    666
    Par défaut
    Bonjour breweryfr

    ça serait bien que tu sois un peu plus clair dans tes questions, n'oublie pas que nous ne sommes pas dans ton programme....

    supposition,
    j'imagine qu'après avoir fait ta requête, tu pars sur une boucle de mise à jour où tu vas regarder pour chaque ligne affichée par ton écran si tu trouve ton élément dans la liste retournée par ta requête.
    le problème après avoir fait ton movenext c'est que ton écran se rafraîchit.

    là ça me surprend, est ce que plutôt à la fin de ton traitement tu ne te retrouve pas positionné sur la dernière ligne de ta table ?
    si non c'est que dans cette boucle il y a quelque chose qui déclenche le rafraîchissement de l'écran
    si oui, il faut à la fin de ta boucle te repositionner sur le 1er enregistrement ou l'enregistrement qui était actif avant la boucle
    ----
    Il ne s'agit pas de chercher à tout savoir mais de savoir où tout chercher

    merci de penser à
    Au fait.... je ne réponds pas, moi non plus, aux mp

  6. #6
    Membre du Club
    Homme Profil pro
    NC
    Inscrit en
    Janvier 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : NC
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2013
    Messages : 61
    Points : 51
    Points
    51
    Par défaut
    Effectivement je suis dans une boucle de recherche et à chaque instruction de passage à l'enregistrement suivant mon formulaire se rafraichit...
    Comment éviter ce rafraichissement.


    Voici mes lignes de code, j'ai ajouté des commentaires pour faciliter la lecture
    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
    ' définition de la base de données
    Set rs = Me.Recordset
     
    'mémorise la position actuelle
    j = rs.AbsolutePosition
     
    'Val étant la valeur à rechercher
    Val = Forms![SAV].Form![APPAREIL_ID]
     
    'déplacement au premier enregistrement
    rs.MoveFirst
     
    n = 0
    For i = 0 To j
    V = Forms![SAV].Form![APPAREIL_ID]
        If Forms![SAV].Form![APPAREIL_ID] = Val Then
            n = n + 1
        End If
     
    'déplacement à l'enregistrement suivant
    rs.MoveNext
    Next i
     
    'Annule le dernier déplacement pour retrouver la position j
    rs.MovePrevious

  7. #7
    Membre éclairé Avatar de pyloupylou
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2012
    Messages
    438
    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 : Janvier 2012
    Messages : 438
    Points : 666
    Points
    666
    Par défaut
    tu vas rire, je pensais avoir compris ce que tu voulais et quand je vois ton code..... je ne suis plus sûr du tout....

    sinon pour bloquer le rafraichissement de l'écran voir ici :
    http://access.developpez.com/faq/?page=IHM#DesRafrEcr
    ----
    Il ne s'agit pas de chercher à tout savoir mais de savoir où tout chercher

    merci de penser à
    Au fait.... je ne réponds pas, moi non plus, aux mp

  8. #8
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 600
    Points
    24 600
    Par défaut
    Bonjour,

    Je suivais également cette discussion et il me semblait avoir compris... jusqu'à que je lise le code. Pyloupylou tu dois te sentir moins seul

    Dans tous les cas rechercher un enregistrement avec une boucle c'est... comment dire... comme vouloir attraper des mouches avec une raquette de tennis.

    Utilise plutôt la méthode Findfirst de ton Recordset.

    Consulte le tuto sur DAO pour en savoir plus.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  9. #9
    Membre du Club
    Homme Profil pro
    NC
    Inscrit en
    Janvier 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : NC
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2013
    Messages : 61
    Points : 51
    Points
    51
    Par défaut
    Bonjour,

    Et merci d'avoir répondu.

    Pour PYLOUPYLOU
    J'avais utilisé l'ancienne methode docmd.echo mais avec l'instruction application.echo ça fonctionne.
    Idéalement et pour des raisons de compatibilité il est conseillé d'utiliser la dernière instruction semble-t-il.

    As for why it's better to use the Application method if possible, MS says "The Echo method of the DoCmd object was
    added to provide backward compatibility for running the Echo action in Visual Basic code in Microsoft Access for
    Windows 95. It's recommended that you use the existing Echo method of the Application object instead." They
    don't say why, but I assume they know what they're talking about.

    Pour LOUFAB
    La fonction FindFirst est bien plus efficace, je l'ai essayé et adopté. Merci.

    Sujet clôt pour moi.

  10. #10
    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,
    Citation Envoyé par breweryfr Voir le message
    Effectivement je suis dans une boucle de recherche et à chaque instruction de passage à l'enregistrement suivant mon formulaire se rafraichit...
    Comment éviter ce rafraichissement.
    Essaie Set rs = Me.RecordsetClone au lieu de Set rs = Me.Recordset.

    A+

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

Discussions similaires

  1. Connaitre le numéro attribué a un numéro auto
    Par Doo dans le forum VBA Access
    Réponses: 2
    Dernier message: 28/04/2007, 10h49
  2. Connaitre le numéro de ligne exécuté dans le code
    Par heddicmi dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 25/10/2006, 16h15
  3. Réponses: 8
    Dernier message: 23/06/2006, 22h53
  4. Réponses: 1
    Dernier message: 31/03/2006, 11h24
  5. Réponses: 2
    Dernier message: 06/01/2006, 22h55

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