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 :

Elément non trouvé avec FindFirst


Sujet :

VBA Access

  1. #1
    Membre averti

    Profil pro
    Inscrit en
    Mai 2002
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 640
    Points : 408
    Points
    408
    Par défaut Elément non trouvé avec FindFirst
    Bonjour,

    J'effectue une série de recherches dans une table, avec FindFirst. Mon code est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    For Each oFl In oFd.Files
                tTablFicCour = Split(oFl.name, " - ")
                sCodeSite = tTablFicCour(0)
     
                rstSites.MoveFirst
                rstSites.FindFirst ("Code_long='" & sCodeSite & "'")
                If rstSites.NoMatch Then
                    oFicJournal.WriteLine ("Erreur: Le site '" & sCodeSite & "' n'existe pas.")
                    GoTo Fichier_Suivant
                Else
                    sNomSite = rstSites("Site_Nom")
                End If
     
    Next
    Or cela ne fonctionne que pour le premier enregistrement trouvé. Ensuite rstSites.FindFirst me renvoit toujours au premier enregistrement trouvé, et NoMatch est à True, alors que les codes recherchés existent bien.

  2. #2
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    FindFirst veut dire "trouver le premier".
    Le programme fait donc ce que tu lui demandes.

    Un petit F1 sur FindNext devrait t'éclairer.

  3. #3
    Membre averti

    Profil pro
    Inscrit en
    Mai 2002
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 640
    Points : 408
    Points
    408
    Par défaut
    Je me suis mal exprimé, mais je pensais que mon code était clair. Lorsque je passe au fichier suivant, j'exécute à nouveau FindFirst, avec le nouveau code en paramètres. Or je suis toujours sur l'enregistrement correspondant au fichier précédent.

  4. #4
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Je serais toi, je mettrais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox "Code_long='" & sCodeSite & "'"
    avant le FindFirst de manière à voir quel paramètre tu lui passes.

  5. #5
    Membre averti

    Profil pro
    Inscrit en
    Mai 2002
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 640
    Points : 408
    Points
    408
    Par défaut
    J'ai déjà regardé. Je passe le bon paramètre.

  6. #6
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Dans ce cas, je mettrais un MsgBox affichant un champ déterminant du record après le MoveFirst.
    Ceci pour savoir si le MoveFirst a un effet.

    Comme on n'a aucune idée ni du type de connexion ni du curseur utilisé (tu ne les montres pas dans ton code), on doit y aller par suppositions et essais...

  7. #7
    Membre averti

    Profil pro
    Inscrit en
    Mai 2002
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 640
    Points : 408
    Points
    408
    Par défaut
    Citation Envoyé par AlainTech Voir le message
    Dans ce cas, je mettrais un MsgBox affichant un champ déterminant du record après le MoveFirst.
    Ceci pour savoir si le MoveFirst a un effet.
    Non apparemment le MoveFirst n'a pas d'effet ! Il m'affiche toujours le dernier enregistrement traité.

    Comme on n'a aucune idée ni du type de connexion ni du curseur utilisé (tu ne les montres pas dans ton code), on doit y aller par suppositions et essais...
    J'ai le même problème avec les 2 types de curseurs (dbOpenSnapshot, dbOpenTable ou dbOpenDynaset).
    Set rstSites = CurrentDb.OpenRecordset("P_Site", dbOpenDynaset)

  8. #8
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Détruis ton RecordSet entre 2 usages...

  9. #9
    Membre averti

    Profil pro
    Inscrit en
    Mai 2002
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 640
    Points : 408
    Points
    408
    Par défaut
    Citation Envoyé par AlainTech Voir le message
    Détruis ton RecordSet entre 2 usages...
    Il n'y a pas d'autre moyen ? Si le Recordset est détruit et récréé à chaque fois, le traitement est beaucoup plus long.

Discussions similaires

  1. Réponses: 9
    Dernier message: 18/02/2008, 20h27
  2. sqlplus non trouvé avec Oracle XE 10g
    Par thn365 dans le forum Installation
    Réponses: 4
    Dernier message: 23/11/2007, 19h59
  3. Elément non trouvé
    Par jmde dans le forum VBA Access
    Réponses: 9
    Dernier message: 11/06/2007, 23h43
  4. .jars non trouvés avec Tomcat
    Par Invité dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 03/05/2007, 09h26
  5. [Loader] Problème de classe non trouvée avec LoadFile
    Par Ericx_25 dans le forum Autres composants
    Réponses: 3
    Dernier message: 29/01/2007, 19h01

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