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 :

Problème de syntaxe avec FindFirst


Sujet :

VBA Access

  1. #1
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 040
    Points
    16 040
    Par défaut Problème de syntaxe avec FindFirst
    Bonjour,

    J'ai 3 fonctions me permettant de trouver des enregistrements en fonction de 3 champs différents.

    J'aimerais n'en garder qu'une en passant les champs en paramètre, mais j'ai une erreur sur le FindFirst. Je n'arrive pas à récupérer mon paramètre en type long.

    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
    Function ChercherFilleuls(Filleuls As Long) As Boolean
     
        Dim Db As DAO.Database
        Dim rst As DAO.Recordset
     
        Set Db = CurrentDb
        Set rst = Db.OpenRecordset("tblAdherents", dbOpenDynaset)
     
        rst.FindFirst "[Filleuls] = " & adhId
     
        If rst.NoMatch Then
     
            ChercherFilleuls = False
     
            GoTo ExitFunction
     
        End If
     
        ChercherFilleuls = True
     
    ExitFunction:
     
        rst.Close
        Set rst = Nothing
        Set Db = Nothing
     
    End Function
    Si quelqu'un pouvait me donner la bonne syntaxe...

    Merci d'avance.

    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 032
    Points
    34 032
    Billets dans le blog
    14
    Par défaut
    A essayer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rst.FindFirst "[" & Filleuls & "] = " & adhId
    D'où vient le 'adhId' ? Il n'est déclaré nulle part dans ta fonction.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 040
    Points
    16 040
    Par défaut
    Bonjour,

    'AdhId' est un champ de la table...

    Et je viens d'essayer ta proposition.

    Cela provoque l'erreur 3070 "Le moteur... ne reconnaît pas '1' en tant que nom de champs ou expression correcte."

    '1' est cependant bien la valeur correcte du champ passé en paramètre.

    On ne doit pas être très loin.

    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 032
    Points
    34 032
    Billets dans le blog
    14
    Par défaut
    Je ne suis pas sûr de bien comprendre...

    Le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rst.FindFirst "[" & Filleuls & "] = " & adhId
    va chercher la première occurence de 'adhId' dans le champ [valeur de Filleuls] dans la table.

    Si le champ de la table s'appelle [Filleul], ce n'est pas ça que tu dois passer en paramètre de ta fonction mais adhId, l'adhérent que tu cherches.

    Le bon code ne serait-il pas plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rst.FindFirst "[adhId] = " & Filleuls
    où 'adhId' est bien le nom du champs dans lequel tu cherches le paramètre Filleuls passé à ta fonction ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 040
    Points
    16 040
    Par défaut
    Alors en fait non...

    J'ai une table d'adhérents (clé adhId).

    Certains d'entre eux sont "parrains" d'autres membres.

    Pour les "filleuls", j'ai besoin de savoir qui est leur "parrain".

    J'ai donc créé un champ "filleul" dans ma table, que je renseigne avec la valeur du champ adhId de leur "parrain".

    Maintenant, ce que je cherche à faire, c'est vérifier si pour un adhérent donné, je ne trouve pas son Id dans le champ "filleul" (ceci afin d'éviter de lui supprimer son rôle de parrain).

    En fait, il y'a plusieurs types de "parrain" et de "filleul", raison pour laquelle je désire faire une fonction de recherche générique.

    J'espère que c'est plus clair...

    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  6. #6
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 56
    Points : 42
    Points
    42
    Par défaut
    Je te propose ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rst.FindFirst "[Filleuls]=" & " ' " & adhId & " ' "
    (les côtes entourant adhId).

  7. #7
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 040
    Points
    16 040
    Par défaut
    Bonsoir,

    Merci kmarcel.

    Mais ta proposition ne fonctionne pas non plus. Ce n'est pas au niveau du champs adhId que j'ai un problème, mais au niveau de Filleuls.

    Je viens de reprendre la chose et la proposition de CinePhil n'est pas loin.

    On obtient ceci :

    Alors qu'il faudrait ceci :

    Je viens de faire le test... Si j'enlève les [] avec Replace(), cela fonctionne...

    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  8. #8
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 56
    Points : 42
    Points
    42
    Par défaut
    Ok.
    Avec ce que tu dis, je trouve que sans replace() et les crochets [] ça peut marcher. Comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rst.FindFirst "Filleuls=" & " ' " & adhId & " ' "

  9. #9
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 040
    Points
    16 040
    Par défaut
    Hélas non... J'ai toujours la même erreur au niveau de filleul...

    Par contre, ceci fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim strCriteria As String
     
    strCriteria = "" & Filleuls & " =  " & adhId
     
    rst.FindFirst strCriteria
    Mais si je fais :

    rst.FindFirst = "" & Filleuls & " = " & adhId
    j'ai une erreur lors de la compilation...

    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  10. #10
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 56
    Points : 42
    Points
    42
    Par défaut
    Ok.
    Mais n'oublie pas que dans ta citation
    rst.FindFirst = "" & Filleuls & " = " & adhId
    tu ne dois pas mettre le signe = tout juste après FindFirst!

  11. #11
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 040
    Points
    16 040
    Par défaut
    Ca fonctionne !

    Grand merci !

    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

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

Discussions similaires

  1. Problème de syntaxe avec Findfirst
    Par 33ctdebut dans le forum Access
    Réponses: 7
    Dernier message: 05/03/2007, 10h57
  2. [VB-Excel]problème de syntaxe avec Array
    Par DomBourti dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 13/07/2006, 21h30
  3. Problème de syntaxe avec des nombres
    Par baleiney dans le forum Langage
    Réponses: 7
    Dernier message: 09/07/2006, 10h48
  4. Problème de syntaxe avec le composant TCppWebBrowser
    Par Ptite Développeuse dans le forum C++Builder
    Réponses: 10
    Dernier message: 19/04/2006, 15h48
  5. problème de syntaxe avec champ date
    Par mussara dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 03/02/2006, 16h19

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