Recherche dans un base de données

Le
Jacques \(BE\)
Bonjour,

Je cherche un algorithme ou un bout de code pour effectuer une recherche
dans une base de données.
La recherche porterait sur un ou plusieurs mot et dans plusieurs tables
d'une base de données Access.

algo, code, site sont les binevenus.

Je continue de chercher !

Merci de vos réponses


Jacques(BE)
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jean-marc
Le #15348971
Jacques (BE) wrote:
Bonjour,

Je cherche un algorithme ou un bout de code... pour effectuer une
recherche dans une base de données.
La recherche porterait sur un ou plusieurs mot et dans plusieurs
tables d'une base de données Access.

algo, code, site sont les binevenus.

Je continue de chercher ...!

Merci de vos réponses


Jacques(BE)



Hello Jacques,

peux tu préciser un tout petit peu plus? Il y a plusieurs
réponses possibles, notamment dépendant du sens que tu donnes
au mot "recherche d'un mot". Egalement ce que tu entends par
"dans plusieurs tables".

La ou les réponses peuvent aller d'un simple:
SELECT * FROM table where machin like '%bidule%'

à des choses très compliquées.

Bref, qq détails seront bienvenus :-)


--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/
Jacques
Le #15348961
Bonjour Jean-marc,

Un textbox dans lequel l'utilisateur peut entrer un mot ou plusieurs mots
séparés par une virgule.
Je récupère les mots dans un tableau (split).

Que ce soit pour un ou plusieurs mots, je voudrai faire la recherche dans
une base de données Access
qui contient plusieurs tables. Disons les tables A, B , C et D

Ma recherche porterait sur la table A et dans le champ a1 et a2, dans la
table B sur le champ b1,
dans la table C sur le champ c1 et sur le champ c2 et enfin dans la table D
sur le champ d1.

J'avais pensé prendre le premier mot, faire ma recherche dans la table A,
ajouter le résultat dans un datagrid.
Faire ma recherche dans la table B, etc pour chacune des tables.
Et refaire la même choses pour chacun des mots.

Mais est-ce la bonne façon de faire ??



Jacques


"Jean-marc" de news:462fb355$0$13859$
Jacques (BE) wrote:
Bonjour,

Je cherche un algorithme ou un bout de code... pour effectuer une
recherche dans une base de données.
La recherche porterait sur un ou plusieurs mot et dans plusieurs
tables d'une base de données Access.

algo, code, site sont les binevenus.

Je continue de chercher ...!

Merci de vos réponses


Jacques(BE)



Hello Jacques,

peux tu préciser un tout petit peu plus? Il y a plusieurs
réponses possibles, notamment dépendant du sens que tu donnes
au mot "recherche d'un mot". Egalement ce que tu entends par
"dans plusieurs tables".

La ou les réponses peuvent aller d'un simple:
SELECT * FROM table where machin like '%bidule%'

à des choses très compliquées.

Bref, qq détails seront bienvenus :-)


--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/




jean-marc
Le #15348931
"Jacques" news:
Bonjour Jean-marc,

Un textbox dans lequel l'utilisateur peut entrer un mot ou plusieurs mots
séparés par une virgule.
Je récupère les mots dans un tableau (split).

Que ce soit pour un ou plusieurs mots, je voudrai faire la recherche dans
une base de données Access
qui contient plusieurs tables. Disons les tables A, B , C et D

Ma recherche porterait sur la table A et dans le champ a1 et a2, dans la
table B sur le champ b1,
dans la table C sur le champ c1 et sur le champ c2 et enfin dans la table
D sur le champ d1.

J'avais pensé prendre le premier mot, faire ma recherche dans la table A,
ajouter le résultat dans un datagrid.
Faire ma recherche dans la table B, etc pour chacune des tables.
Et refaire la même choses pour chacun des mots.

Mais est-ce la bonne façon de faire ??



Hello,

Mais oui, c'est la bonne façon de faire. On peut toujours
imaginer de faire quelque chose de bcp plus compliqué
avec des joitures ou des union de selext, mais pour ce genre
de cas, il vaut toujours mieux se conformer à la première
loi de l'informatique, qui dit:
"Keep it simple and easy" => Faire simple et facile.

Inutile de se tordre les neurones et de faire un design
inutilement compliqué quand une solution toute facile
existe.

Si par exemple tu avais des centaines de tables et de champs,
les choses seraient différentes car une solution "basique"
pourrait alors se révéler (peut-être) insuffisante.

Ceci dit, faire simple ne veut pas dire non plus faire
"sale".

Dans ton cas, je pense qu'un minimum est de faire en sorte que
les tables et champs à examiner soit proprement déclarées dans
des variables, éventuellement lues depuis un petit fichier de
config pour rendre le comportement du programme aisément
modifiable sans recompilation, par simple modification du
fichier de config (ajout de tables, de champs, etc.)


--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/
Guy DETIENNE
Le #15348921
Salut ;O)

Pour implémenter une solution générique (sans harcoder le nom des tables ou
par un fichier INI), il faudrait obtenir de facçon dynamique le schéma de la
DB.

Si tu utilises le modèle ADO, tu peux obtenir le schéma via la méthode
OpenSchema de l'objet Connection.
OpenSchema permet, entre autres, de récupérer toutes les tables, les champs
ainsi que les propriétés des champs.

Avec ces infos, tu pourrais ainsi parcourir toutes les tables et rechercher
ta liste de mots dans les champs de type Text...
Avec une DB Access, c'est très simple.

Un lien pour débuter :

http://support.microsoft.com/kb/186246/fr

Si tu veux plus d'infos fais-le moi savoir.

Guy


"Jacques"
Bonjour Jean-marc,

Un textbox dans lequel l'utilisateur peut entrer un mot ou plusieurs mots
séparés par une virgule.
Je récupère les mots dans un tableau (split).

Que ce soit pour un ou plusieurs mots, je voudrai faire la recherche dans
une base de données Access
qui contient plusieurs tables. Disons les tables A, B , C et D

Ma recherche porterait sur la table A et dans le champ a1 et a2, dans la
table B sur le champ b1,
dans la table C sur le champ c1 et sur le champ c2 et enfin dans la table
D sur le champ d1.

J'avais pensé prendre le premier mot, faire ma recherche dans la table A,
ajouter le résultat dans un datagrid.
Faire ma recherche dans la table B, etc pour chacune des tables.
Et refaire la même choses pour chacun des mots.

Mais est-ce la bonne façon de faire ??



Jacques


"Jean-marc" message de news:462fb355$0$13859$
Jacques (BE) wrote:
Bonjour,

Je cherche un algorithme ou un bout de code... pour effectuer une
recherche dans une base de données.
La recherche porterait sur un ou plusieurs mot et dans plusieurs
tables d'une base de données Access.

algo, code, site sont les binevenus.

Je continue de chercher ...!

Merci de vos réponses


Jacques(BE)



Hello Jacques,

peux tu préciser un tout petit peu plus? Il y a plusieurs
réponses possibles, notamment dépendant du sens que tu donnes
au mot "recherche d'un mot". Egalement ce que tu entends par
"dans plusieurs tables".

La ou les réponses peuvent aller d'un simple:
SELECT * FROM table where machin like '%bidule%'

à des choses très compliquées.

Bref, qq détails seront bienvenus :-)


--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/







Jacques\(BE\)
Le #15348861
Bonjour,

Merci à vous deux.
Je vais tenir complte de vos conseils.

Jacques


"Guy DETIENNE" news:uRWJRe$
Salut ;O)

Pour implémenter une solution générique (sans harcoder le nom des tables ou
par un fichier INI), il faudrait obtenir de facçon dynamique le schéma de la
DB.

Si tu utilises le modèle ADO, tu peux obtenir le schéma via la méthode
OpenSchema de l'objet Connection.
OpenSchema permet, entre autres, de récupérer toutes les tables, les champs
ainsi que les propriétés des champs.

Avec ces infos, tu pourrais ainsi parcourir toutes les tables et rechercher ta
liste de mots dans les champs de type Text...
Avec une DB Access, c'est très simple.

Un lien pour débuter :

http://support.microsoft.com/kb/186246/fr

Si tu veux plus d'infos fais-le moi savoir.

Guy


"Jacques"
Bonjour Jean-marc,

Un textbox dans lequel l'utilisateur peut entrer un mot ou plusieurs mots
séparés par une virgule.
Je récupère les mots dans un tableau (split).

Que ce soit pour un ou plusieurs mots, je voudrai faire la recherche dans une
base de données Access
qui contient plusieurs tables. Disons les tables A, B , C et D

Ma recherche porterait sur la table A et dans le champ a1 et a2, dans la
table B sur le champ b1,
dans la table C sur le champ c1 et sur le champ c2 et enfin dans la table D
sur le champ d1.

J'avais pensé prendre le premier mot, faire ma recherche dans la table A,
ajouter le résultat dans un datagrid.
Faire ma recherche dans la table B, etc pour chacune des tables.
Et refaire la même choses pour chacun des mots.

Mais est-ce la bonne façon de faire ??



Jacques


"Jean-marc" de news:462fb355$0$13859$
Jacques (BE) wrote:
Bonjour,

Je cherche un algorithme ou un bout de code... pour effectuer une
recherche dans une base de données.
La recherche porterait sur un ou plusieurs mot et dans plusieurs
tables d'une base de données Access.

algo, code, site sont les binevenus.

Je continue de chercher ...!

Merci de vos réponses


Jacques(BE)



Hello Jacques,

peux tu préciser un tout petit peu plus? Il y a plusieurs
réponses possibles, notamment dépendant du sens que tu donnes
au mot "recherche d'un mot". Egalement ce que tu entends par
"dans plusieurs tables".

La ou les réponses peuvent aller d'un simple:
SELECT * FROM table where machin like '%bidule%'

à des choses très compliquées.

Bref, qq détails seront bienvenus :-)


--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/











Publicité
Poster une réponse
Anonyme