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 :

recherche avec les méthode find


Sujet :

VBA Access

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 755
    Points : 208
    Points
    208
    Par défaut recherche avec les méthode find
    Bonjour à tous,
    Je dois faire une recherche sur une table Access sur un champ non indexé, j'utilise pour ca les méthodes find :
    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
     
     
              Dim DbIns As DAO.Database
              Set DbIns = CurrentDb
              Dim DbRstIns As DAO.Recordset
     
     
              Set DbRstIns = DbIns.OpenRecordset("select  *  from Tab_Insertions;")
     
              Dim strCritere As String
                 strCritere = "Num_Archives = " & Chr(34) & oWSht.Cells(i, 8) & Chr(34)
     
                DbRstIns.FindFirst strCritere
     
                If Not (DbRstIns.NoMatch) Then
                  MsgBox "1ere Insertion trouvée"
     
                  Do While Not DbRstIns.NoMatch
                    MsgBox "Insertion suivante trouvée"
     
                    If (DbRstIns.EOF) Then
                      DbRstIns.FindLast strCritere
                      MsgBox "der inser"
                        Else
                      DbRstIns.FindNext strCritere
                    End If
     
                  Loop
     
                End If
    Le problème est que tel que je l'ai écris il me compte un enregistrement de plus chaque fois et ne trouve jamais la fin de fichier. Faut il utiliser les méthodes move pour se déplacer dans le recordset pour arriver en fin de fichier ?
    Si quelqu'un peut m'aider merci

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Je ne saisi pas bien ton problème mais voici un exemple de code parcourant des données avec un FindNext().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    dim db as dao.database:set db=currentdb
    dim r as dao.rcordset:set r=db.openrecordset("nomSource", dbOpenDynsaet)
    dim critere as string:critere="un critere"
     
    call r.findfirst(critere)
     
    do while not r.nomatch()  'Boucle tant qu'il y a des enregistrements correspondant au critère 
       'ici du code
       call r.FinNext(critere)
    loop
     
    r.close: set r=nothing
    db.close:set db=nothing
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 755
    Points : 208
    Points
    208
    Par défaut
    Citation Envoyé par marot_r Voir le message
    Bonjour.

    Je ne saisi pas bien ton problème mais voici un exemple de code parcourant des données avec un FindNext().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    dim db as dao.database:set db=currentdb
    dim r as dao.rcordset:set r=db.openrecordset("nomSource", dbOpenDynsaet)
    dim critere as string:critere="un critere"
     
    call r.findfirst(critere)
     
    do while not r.nomatch()  'Boucle tant qu'il y a des enregistrements correspondant au critère 
       'ici du code
       call r.FinNext(critere)
    loop
     
    r.close: set r=nothing
    db.close:set db=nothing
    ************************************************
    Merci pour ta réponse, ton idée est bonne je me compliquais la vie avec des "findLast" qui ne servent à rien puisqu'il suffit en effet de chercher jusqu'à la fin de la table, de plus je plaçais mal mon "MsgBox" c'est pour quoi il affichait une fois de trop le "match".
    Merci à toi

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 31/12/2007, 13h50
  2. problème de recherche avec les collections
    Par gibea00 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 21/08/2007, 23h23
  3. Problème avec les méthodes en JAVA
    Par beegees dans le forum Langage
    Réponses: 9
    Dernier message: 04/02/2007, 20h19
  4. formulaire de recherche avec les dates
    Par chelmi95 dans le forum Access
    Réponses: 5
    Dernier message: 25/10/2006, 21h00
  5. [Système] Problème avec les méthodes d'une classe
    Par oussama127 dans le forum Langage
    Réponses: 7
    Dernier message: 30/08/2006, 09h18

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