Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/08/2011, 16h50   #1
Expert Confirmé
 
Avatar de Godzestla
 
Homme
Chercheur de bonheur
Inscription : août 2007
Messages : 2 255
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : août 2007
Messages : 2 255
Points : 2 979
Points : 2 979
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 :
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
__________________
(\ _ /) Cordialement G@dz
(='.'=)

(")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.
Godzestla est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2011, 17h11   #2
Membre éclairé
 
Homme Michel
Développeur informatique
Inscription : février 2008
Messages : 261
Détails du profil
Informations personnelles :
Nom : Homme Michel
Localisation : France, Hérault (Languedoc Roussillon)

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

Informations forums :
Inscription : février 2008
Messages : 261
Points : 304
Points : 304
Par défaut Je ne sais si cela répond...

Perso, avec Access 2003 je ferais un truc du genre :

Code :
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
Orion34080 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 11h54   #3
Expert Confirmé
 
Avatar de Godzestla
 
Homme
Chercheur de bonheur
Inscription : août 2007
Messages : 2 255
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : août 2007
Messages : 2 255
Points : 2 979
Points : 2 979
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 :
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
__________________
(\ _ /) Cordialement G@dz
(='.'=)

(")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.
Godzestla est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 12h24   #4
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 939
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 : 3 939
Points : 6 278
Points : 6 278
Bonjour,

Je pense que le problème vient des antislash dans le critère :
Code :
Criteria_Events = "EventCode Like  \'" & Me!Importing_Event_Prefix & "*\'"
Essaie en les enlevant
Code :
Criteria_Events = "EventCode Like  '" & Me!Importing_Event_Prefix & "*'"
A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 13h18   #5
Expert Confirmé
 
Avatar de Godzestla
 
Homme
Chercheur de bonheur
Inscription : août 2007
Messages : 2 255
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : août 2007
Messages : 2 255
Points : 2 979
Points : 2 979
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.
__________________
(\ _ /) Cordialement G@dz
(='.'=)

(")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.
Godzestla est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h58.


 
 
 
 
Partenaires

Hébergement Web