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 :

Utilisation de Like dans un argument de recherche [AC-2003]


Sujet :

VBA Access

  1. #1
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut Utilisation de Like dans un argument de recherche
    Bonjour,

    je voudrais boucler sur les enregistrements d'un recordset dont la clé commence par un préfixe.

    J'essaie de coder en utilisant Like, ce que je n'ai encore jamais fait, mais je ne trouve pas la syntaxe, malgré ce que j'ai trouvé dans la FAQ.

    Voici mon code :
    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
    '************************************************************
    '* Check if events exists whith this Importing_Event_prefix *
    '************************************************************
    Criteria_Events = "EventCode Like  \'" & Me!Importing_Event_Prefix & "*\'"
    
    Ob_Events = "SQL_Events_By_EventCode"
    Set Entry_Events = db.OpenRecordset(Ob_Events)
    Events_Count = 0
    'loop Events and counts
    Entry_Events.FindFirst (Criteria_Events)
    While Not Entry_Events.NoMatch
        Evolution = Evolution + 1
        Application.SysCmd acSysCmdUpdateMeter, Evolution 'Définit le texte à afficher et la valeur actuelle de la jauge.
        Events_Count = Events_Count = 1
        Entry_Events.FindNext (Criteria_Events)
    Wend
    Ca calle sur le findfirst.

    L'argument que je cherche est tout ce qui commence par mon critère, qui ici vaut "2011PF", donc je veux faire qqchose du genre
    EventCode Like "2011PF*".

    je recçois l'erreur suivante :
    Run-time error '3077'
    Syntax error : missing operator in expression

    Merci pour vos lumières

  2. #2
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2008
    Messages : 286
    Points : 383
    Points
    383
    Par défaut Je ne sais si cela répond...
    Perso, avec Access 2003 je ferais un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim rs As RecordSet
    Dim StrSql as String
     
    rs = New ADODB.recordset
     
    StrSql = "Select * from MaTable where MaRubrique like '2011PF*'"
    rs.Open StrSql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
    If Not rs.EOF Then
        rs.MoveFirst
        Do While Not rs.EOF
            '--> là tu fais ce que tu veux faire avec cet enregistrement
            rs.MoveNext
        Loop
    End If
    Et bien sûr pour traiter les champs de ta requete tu emploies la syntaxe :
    rs("Nom_du_Champ")


    J'espère que cela peut aider...
    Michel

  3. #3
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Merci Orion3480,

    mais n'utilisant pas ADO (DAO uniquement), j'ai préféré ne pas ajouter de référence supplémentaire à mon VBA.

    J'ai codé comme ceci, sans like, et cela fonctionne.
    Tant pis s'il y avait plus simple.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    'Checkout if events already created with this prefix.
    Criteria_Events = "((EventCode >= '" & Me!Importing_Event_Prefix & "0001') AND (EventCode <= '" & Me!Importing_Event_Prefix & "9999'))"
    Ob_Events = "SQL_Events_By_EventCode"
    Set Entry_Events = Dbp.OpenRecordset(Ob_Events)
     
    'Count Matching events
    Events_Count = 0
     
    Entry_Events.FindFirst (Criteria_Events)
     
    While Not Entry_Events.NoMatch
        Events_Count = Events_Count + 1
        Entry_Events.FindNext (Criteria_Events)
    Wend

  4. #4
    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 768
    Points
    7 768
    Par défaut
    Bonjour,

    Je pense que le problème vient des antislash dans le critère :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Criteria_Events = "EventCode Like  \'" & Me!Importing_Event_Prefix & "*\'"
    Essaie en les enlevant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Criteria_Events = "EventCode Like  '" & Me!Importing_Event_Prefix & "*'"
    A+

  5. #5
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Bonjour,

    tu as parfaitement exact. je pensais avoir essayé, mais j'ai du faire une erreur. Maintenant cela fonctionne impeccablement.

    La syntaxe avec l'antislash vient de la faq, ici.

    Est-ce moi qui n'ai pas compris ou bien il y a une erreur.

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

Discussions similaires

  1. Sqlite et utilisation de Like dans requête préparée
    Par joreveur dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 25/05/2015, 21h37
  2. Utilisation de LIKE dans DQL avec un parametre
    Par benderpremier dans le forum Doctrine2
    Réponses: 2
    Dernier message: 29/08/2011, 08h51
  3. Utilisation de "like" dans DataStage
    Par Richi84 dans le forum DataStage
    Réponses: 4
    Dernier message: 27/03/2009, 16h56
  4. Réponses: 1
    Dernier message: 19/05/2006, 18h25
  5. utilisation de "LIKE" avec un type datetime dans r
    Par ericmart dans le forum Langage SQL
    Réponses: 8
    Dernier message: 06/11/2003, 14h58

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