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

Access Discussion :

Recherche de plusieurs critères dans un recordset


Sujet :

Access

  1. #1
    Membre actif Avatar de Mariboo
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    254
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 254
    Points : 238
    Points
    238
    Par défaut Recherche de plusieurs critères dans un recordset
    Bonjour !

    J'ai cherché dans la FAQ et dans le forum mais je ne trouve pas la réponse qui me correspond....

    voilà, j'ai un recordset basé sur une requete... avec les 2 champs de ma requete j'aimerai faire une recherche de critère dans une table...

    Explications :
    Voilà mon code pour ouvrir mon (mes) recordset et la valorisation de mes 2 critères (en gras):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Set Mabd = CurrentDb
    Set requete = Mabd.CreateQueryDef("", "Detail commande importee")
    Set tableRequete = requete.OpenRecordset()
    Set tableCommande = Mabd.OpenRecordset("COMMANDES", DB_OPEN_DYNASET)
    Set tableDetailCommande = Mabd.OpenRecordset("DETAILS COMMANDES", DB_OPEN_DYNASET)
    tableRequete.MoveFirst
    While Not tableRequete.EOF = False
        NumeroDeCommande = tableRequete.Fields(0).Value
        critere = "[N°_commande] = '" & NumeroDeCommande & "'"
        tableCommande.FindFirst critere
        If Not (tableCommande.NoMatch) Then
            NumeroDeFiche = tableRequete.Fields(1).Value
            critere2 = "[N°_fiche] = '" & NumeroDeFiche & "'"


    Ce que je veux c'est écrire après cette dernière ligne un truc du genre :
    tableDetailCommande.findFirst critere critere2

    c'est à dire rechercher les lignes qui ont ce numéro de commande (critere) ET ce numero de fiche (critere2) pour chaque ligne de ma table "Details COMMANDES"

  2. #2
    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,

    En DAO le findfirst n'accepte qu'un seul critère.
    La même méthode ADO en accepte plusieurs.

    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

  3. #3
    Membre actif Avatar de Mariboo
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    254
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 254
    Points : 238
    Points
    238
    Par défaut
    Oui j'y ai pensé ...

    j'ai référencé la bibliothèque ADO et ensuite j'ai redéfini mon recordset
    comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim tableDetailCommande As ADODB.Recordset
    Mais il ne me propose pas la méthode "FindFirst" mais juste "Find" et je n'arrive pas à lui faire mettre 2 critères.... je pense que je ne sais pas bien me servir de la méthode Find

  4. #4
    Membre actif Avatar de Mariboo
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    254
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 254
    Points : 238
    Points
    238
    Par défaut
    J'ai cherché dans la FAQ , mais la FAQ me renvoi sur le site de microsoft et je n'y comprend rien à leur solution !

  5. #5
    Membre actif Avatar de Mariboo
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    254
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 254
    Points : 238
    Points
    238
    Par défaut
    Bon j'ai essayé de décortiquer la solution microsoft et j'ai pondu ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If tableDetailCommande.Find (critere) And tableDetailCommande.Find(critere2) Then
    MAIS ..... j'ai l'erreur : "Fonction ou variable attendue"

  6. #6
    Membre actif Avatar de Mariboo
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    254
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 254
    Points : 238
    Points
    238
    Par défaut
    Quelqu'un peut m'expliquer comment passer deux critères dans la méthode FIND ??

  7. #7
    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
    Remonte ta référence ADO avant DAO et tu devrais voir apparaitre la méthode Findfirst dans la liste.

    Ci-joint un code ADO qui fonctionne avec des critères multiples.

    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
     
    Dim RS As Recordset
     
    Set RS = Me.RecordsetClone
    criteria = "[Jour]=" & Me.Jour & " and [Ordre]=" & Me.ORDRE
     
    RS.FindFirst criteria
     
    If Not RS.NoMatch Then
     
       MsgBox "Ce numéro d'ordre existe pour ce jour."
     
    Else
       msgbox "Ce numéro d'ordre n'existe pas pour ce jour."
     
    End If
     
    RS.close
    set RS = nothing
    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

  8. #8
    Membre actif Avatar de Mariboo
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    254
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 254
    Points : 238
    Points
    238
    Par défaut
    MERCI !!

    je m'étais débrouillée autrement en passant par une requete paramétrée avec mes critères et en regardant si cette requete retournait un résultat ou pas...

    Mais ce que tu m'as donné là me servira pour le futur ...

    Merci

  9. #9
    Membre habitué Avatar de Massiliya
    Femme Profil pro
    Ingénieur en génie industriel
    Inscrit en
    Mars 2017
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur en génie industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2017
    Messages : 174
    Points : 152
    Points
    152
    Par défaut
    Citation Envoyé par loufab Voir le message
    Remonte ta référence ADO avant DAO et tu devrais voir apparaitre la méthode Findfirst dans la liste.

    Ci-joint un code ADO qui fonctionne avec des critères multiples.

    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
     
    Dim RS As Recordset
     
    Set RS = Me.RecordsetClone
    criteria = "[Jour]=" & Me.Jour & " and [Ordre]=" & Me.ORDRE
     
    RS.FindFirst criteria
     
    If Not RS.NoMatch Then
     
       MsgBox "Ce numéro d'ordre existe pour ce jour."
     
    Else
       msgbox "Ce numéro d'ordre n'existe pas pour ce jour."
     
    End If
     
    RS.close
    set RS = nothing
    Bonjour
    Il y'a longtemps pour cette discussion mais...
    J'ai un problème un peu pareil en fait je dois vérifier deux critère!!!
    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
        Dim rsDim_aux As Recordset
        Dim rsDimensions As Recordset
        Dim critere04 As String ' On va mettre dans lequel la "référence_dim" de la table "Dimensions"
        Set rsDim_aux = CurrentDb.OpenRecordset("dim_aux")
        Set rsDimensions = CurrentDb.OpenRecordset("Dimensions")
        rsDim_aux.MoveFirst
        While Not rsDim_aux.EOF() 'parcourir la table "dim_aux"
              Debug.Print rsDim_aux![Dimcoupe]
              critere04 = "[Longueur] =" & rsDim_aux![Dimcoupe]
              critere04 = critere04 & " and [Matière première] = """ & Me.CodeMP & """"
              Debug.Print critere04
              rsDimensions.FindFirst critere04
              If Not rsDimensions.NoMatch Then
                     rsDimensions.Edit   'modifier la table "dimensions"
                     rsDimensions![Quantité utilisée] = rsDimensions![Quantité utilisée] + Me.Quantity  'calcul du cumul par MP
                     rsDimensions.Update 'mise à jour de la table "dimensions"
              End If
              rsDim_aux.MoveNext 'longueur suivante de la table "dim_aux"
       Wend
       rsDim_aux.Close
       rsDimensions.Close
       Set rsDim_aux = Nothing
       Set rsDimensions = Nothing
    Le problème c'est dans la ligne
    rsDimensions.FindFirst critere04
    J'ai essayé au début:
    call rsDimensions.FindFirst (critere04)
    Mais c'est toujours la source du problème
    Merci de m'aider
    A+
    While the grass grows, the steer starves

  10. #10
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    Bonsoir,
    J'ai un problème un peu pareil en fait je dois vérifier deux critère!!!
    Peux-tu préciser ta version d'Access ?
    J'utilise Access 2013 et il accepte plusieurs critères et sans la référence ADO.
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  11. #11
    Membre habitué Avatar de Massiliya
    Femme Profil pro
    Ingénieur en génie industriel
    Inscrit en
    Mars 2017
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur en génie industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2017
    Messages : 174
    Points : 152
    Points
    152
    Par défaut
    Access 2016
    While the grass grows, the steer starves

  12. #12
    Membre habitué Avatar de Massiliya
    Femme Profil pro
    Ingénieur en génie industriel
    Inscrit en
    Mars 2017
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur en génie industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2017
    Messages : 174
    Points : 152
    Points
    152
    Par défaut
    Je pense que le problème provient plutôt du "call"
    Peut-être la syntaxe est incorrecte ! ! !
    While the grass grows, the steer starves

  13. #13
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    Je pense que le problème provient plutôt du "call"
    Non, Call n'est pas en cause.
    Peux-tu essayer en cochant ADO dans tes références ?
    Nom : Ref_ADO.JPG
Affichages : 884
Taille : 48,6 Ko
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  14. #14
    Membre habitué Avatar de Massiliya
    Femme Profil pro
    Ingénieur en génie industriel
    Inscrit en
    Mars 2017
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur en génie industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2017
    Messages : 174
    Points : 152
    Points
    152
    Par défaut
    Citation Envoyé par tee_grandbois Voir le message
    Non, Call n'est pas en cause.
    Peux-tu essayer en cochant ADO dans tes références ?
    Merci Tee le problème est résolu
    A+
    While the grass grows, the steer starves

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

Discussions similaires

  1. [XL-2010] recherche plusieurs critères dans les cellules
    Par sirine_ dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 27/11/2014, 15h12
  2. [XL-2010] recherche plusieurs critères dans les cellules
    Par sirine_ dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 27/11/2014, 11h41
  3. [XL-2007] Recherche avec plusieurs critéres résultat dans une seul colonne
    Par guigui69 dans le forum Excel
    Réponses: 3
    Dernier message: 24/09/2014, 13h34
  4. [XL-2000] Problème de recherche à plusieurs critères dans un document
    Par ben190186 dans le forum Excel
    Réponses: 2
    Dernier message: 21/10/2013, 14h34
  5. Réponses: 12
    Dernier message: 30/03/2006, 20h55

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