Mots-clés dans formulaire access

syber72 Messages postés 3 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 8 mars 2006 - 8 mars 2006 à 14:33
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 8 mars 2006 à 20:54
Bonjour à tous !

J'ai 2 textbox recherche dans un formulaire ou j'indique 1 mot dans chaque, et un bouton OK pour valider ma recherche.
Dans ma table j'ai un champ "mot-clé" où j'ai indiqué plusieurs mots clés par enregistrement, séparés par une virgule.
De quelle façon puis-je créer cette recherche.
J'ai bien fait l'ébauche d'un code mais il ne fonctionne qu'une fois puis plus rien :

Private Sub OK_Click()
Me.Form.AllowAdditions = True
Dim result As String
If [recherche] + [recherche2] > 0 Then
result = [recherche] + [recherche2]
DoCmd.Requery
If Len(Me.mots_clés) > 0 Then
[recherche] = "Résultat pour " + result
Me.Form.AllowAdditions = False
Else
[recherche] = "Pas de résultats"
Me.Form.AllowAdditions = True
End If
Else
result = "Pas de critères entrés"
[recherche] = result
Me.Form.AllowAdditions = True
End If
End Sub
________________________________________________________
Private Sub Form_Unload(Cancel As Integer)
Me.Form.RecordSource = "requête1"
End Sub

Et voici ma requête1 :
SELECT Table1.[mots-clés], Table1.descriptif, Table1.échantillon, Table1.rapports, Table1.date
FROM Table1
WHERE (((Table1.[mots-clés]) Like ("*"+[forms]![formulaire1]![recherche]+"*"))) OR ((("*" & [forms]![formulaire1]![recherche2] & "*")<>False))
ORDER BY Table1.date;

Bon, je sais ce n'est pas de l'art ;op, quelqu'un peut m'aider?
Merci beaucoup de votre patience.

1 réponse

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
8 mars 2006 à 20:54
Salut
Je n'ai pas regardé le début, juste ta requète SQL.
S tu avais lu un peu le forum sur les problèmes de requètes, tu saurais que :
- Si tu n'as qu'une table dans ta requète, pas la peine de répéter le Table1. devant chaque champ. Ca marche pas de problème mais ça allourdi la syntaxe
- Il vaut mieux éviter les noms de champs rappelant les mots clés des langages, comme "date" --> [ ] obligatoires
- Il faut encadrer avec des [ ] les noms de champs qui utilisent des accents ou espace --> échantillon
- Il faut encadrer les valeurs des champs de type texte avec des ' (et les dates avec des # si besoin)
- Une syntaxe SQL ne comporte pas de terme <> False
- Le terme générique sous SQL est %, et pas *
- La conacaténation de chaine, c'est & et pas + (ça marche jusqu'au jour où ça marchera pas)

SELECT [mots-clés], descriptif, [échantillon], rapports, [date]
FROM Table1
WHERE [mots-clés] Like '%" & [forms]![formulaire1]![recherche] & "%'"
OR [mots-clés] Like '%" & [forms]![formulaire1]![recherche2] & "%'"
ORDER BY [date];

Reste un curieux mélande de " et de ', mais comme tu n'as mis que le contenu de ta requète et pas la ligne complète, impossible de connaitre le contexte d'utilisation

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accro
0
Rejoignez-nous