Recherche par Mots clés

chems_1985 Messages postés 5 Date d'inscription vendredi 15 juin 2007 Statut Membre Dernière intervention 18 juillet 2007 - 18 juil. 2007 à 16:49
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 20 juil. 2007 à 19:15
Bonjour

J'ai créé dans une BD une table "menu" qui contient 7 champs : id, nom_menu, motscles1, ...., motscles5

puis j'ai dans ce formulaire (voir l'image) 5 textbox qui chacune est lié a un champ motclé de la BD et un bouton valider

Je veux que lorsque je mrt un mot clé dans une textbox puis je valide, ça va me chercher une liste de tous les "menus" qui contiennent ce mot clé



http://www.hiboox.com/lang-fr/image.php?img=4j922r2j.jpg

3 réponses

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
18 juil. 2007 à 17:45
Salut
Vu l'organisation de ta table, tu n'as pas d'autre choix que de répéter 5 x 5 fois une requète de recherche puisque tu as mis les mots clés dans les champs d'une seule table :
   "Select nom_menu From TableMenu Where motscles1 like '%" & TextBox1.Text & "'%'"
   "Select nom_menu From TableMenu Where motscles2 like '%" & TextBox1.Text & "'%'"
   "Select nom_menu From TableMenu Where motscles3 like '%" & TextBox1.Text & "'%'"
   "Select nom_menu From TableMenu Where motscles4 like '%" & TextBox1.Text & "'%'"
   "Select nom_menu From TableMenu Where motscles5 like '%" & TextBox1.Text & "'%'"
puis
   "Select nom_menu From TableMenu Where motscles1 like '%" & TextBox2.Text & "'%'"
   "Select nom_menu From TableMenu Where motscles2 like '%" & TextBox2.Text & "'%'"
   "Select nom_menu From TableMenu Where motscles3 like '%" & TextBox2.Text & "'%'"
   "Select nom_menu From TableMenu Where motscles4 like '%" & TextBox2.Text & "'%'"
   "Select nom_menu From TableMenu Where motscles5 like '%" & TextBox2.Text & "'%'"
etc ...
Donc, 25 RecordSet !!
Ensuite, il faut récupérer le contenu des 25 RecordSet pour les présenter à l'utilisateur (ListBox ?)
Avec cette organisation, si un mot clé apparait plusieurs fois, il sera stocké plusieurs fois (une fois pour chaque menu): garre à la taille de ta DB !

Ce qu'il aurait fallu faire :
Table 1 : idMenu, nom_menu, idGroupe
Table 2 : idGroupe, idMot
Table 3 : idMot, MotClé
Les champs soulignés seraient les clés primaires des tables.

Après, en recherche, tu n'aurais eu qu'à rechercher MotClé dans la table 3 (5 requètes), puis remonter au menu grace aux idMot et idGroupe.
Avantages : 
- Un mot clé n'est stocké qu'une seule fois = gain de taille DB
- Pas de limite du nombre de mots clé par menu = souplesse
Inconvénients :
- Plus de programme/requète lors des insertions, recherche et suppression

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
0
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
18 juil. 2007 à 17:49
Oups, non, 5 requètes suffisent :
"Select nom_menu From TableMenu " & _
"Where motscles1 like '%" & TextBox1.Text & "'%'"
"   Or motscles1 like '%" & TextBox2.Text & "'%'"
"   Or motscles1 like '%" & TextBox3.Text & "'%'"
"   Or motscles1 like '%" & TextBox4.Text & "'%'"
"   Or motscles1 like '%" & TextBox5.Text & "'%'"

"Select nom_menu From TableMenu " & _
"Where motscles2 like '%" & TextBox1.Text & "'%'"
"   Or motscles2 like '%" & TextBox2.Text & "'%'"
"   Or motscles2 like '%" & TextBox3.Text & "'%'"
"   Or motscles2 like '%" & TextBox4.Text & "'%'"
"   Or motscles2 like '%" & TextBox5.Text & "'%'"
...
0
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
20 juil. 2007 à 19:15
Salut
En réponse à ton message privé (*), ces formules doivent être utilisées dans un RecordSet sur ta base de données.
Ce qui m'étonne, c'est que tu parles de formulaire. Ce mot, en général, vient des applications en VBA de Excel ou Access.
Es-tu sûr d'être en .Net ?
Pour te répondre, il faudra être plus précis :
- environnement de ton application
- méthode d'accès à tes données ...
De toute façon, essaye de rechercher / lire des codes ou des questions sur le forum à propos des base de données.
Il faut connaitre la base (savoir faire une requète de base) avant de commencer à vouloir faire compliqué.

(*) messages auxquels je ne réponds jamais directement car les réponses que pourront te faire les membres de vbfrance pourront surement servir à d'autres, c'est la base même du site.

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