Recherche ( très souple )

Posté par Le_GnU le 30/10/2007 12:30:20
Bonjour,
J'ai créé une fenetre de recherche avec différents champs.
Par exemple, un champ se nomme "difficultés".
La, je peux rentrer un mot, mon programme me trouve tout les enregistrements qui ont dans "difficultés" ce mot.
L'ennui, c'est que si je veux chercher avec plusieurs mots comme :
Allergie,asthme

Il va me trouver tout ceux que j'ai rentré dans "difficultés" avec "Allergie,Asthme" écrit, avec la virgule, sans espace.
si je met un point virgule ou que j'écris autre chose entre
ex : allergie,machin,asthme
Il ne me le trouvera pas non-plus !

Voila le code utilisé ( qui marche, mais que si on écrit exactement pareil ) :

PROCEDURE def_param( NomEta est une chaîne)

sRubCléParcours est une chaîne

// on efface la table
TableSupprimeTout(Table_recherche)

// On active le filtre

// Si les 2 cases sont décochées :
SI ValAvoirt="0" OU ValArchivert="0" ALORS
sRubCléParcours = HFiltre(NomEta, "Nom~]'"+valNom+"'"...
+" ET Rs~]'"+ValDate+"'"...
+" ET a_voir~]'"+ValAvoir+"'"...
+" ET Classes~]'"+ValClasse+"'"...
+" ET Difficultes~]'"+ValDifficultes+"'"...
+" ET Pai~]'"+ValPai+"'"...
+" ET Suites~]'"+ValSuites+"'"...
+" ET Suivi~]'"+ValSuivi+"'"...
+" ET Notes~]'"+ValNotes+"'"...
+" ET Archiver~]'"+ValArchiver+"'")
FIN

// Si la case "tous avoir" est cochée :
SI ValAvoirt="1" ALORS
	sRubCléParcours = HFiltre(NomEta, "Nom~]'"+valNom+"'"...
	+" ET Rs~]'"+ValDate+"'"...
	+" ET Classes~]'"+ValClasse+"'"...
	+" ET Difficultes~]'"+ValDifficultes+"'"...
	+" ET Pai~]'"+ValPai+"'"...
	+" ET Suites~]'"+ValSuites+"'"...
	+" ET Suivi~]'"+ValSuivi+"'"...
	+" ET Notes~]'"+ValNotes+"'"...
	+" ET Archiver~]'"+ValArchiver+"'")	
FIN

// Si la case "tous archiver" est cochée :
SI ValArchivert="1" ALORS
	sRubCléParcours = HFiltre(NomEta, "Nom~]'"+valNom+"'"...
	+" ET Rs~]'"+ValDate+"'"...
	+" ET a_voir~]'"+ValAvoir+"'"...
	+" ET Classes~]'"+ValClasse+"'"...
	+" ET Difficultes~]'"+ValDifficultes+"'"...
	+" ET Pai~]'"+ValPai+"'"...
	+" ET Suites~]'"+ValSuites+"'"...
	+" ET Suivi~]'"+ValSuivi+"'"...
	+" ET Notes~]'"+ValNotes+"'")
FIN

// Si les 2 cases sont cochées :
SI ValAvoirt="1" ET ValArchivert="1" ALORS
	sRubCléParcours = HFiltre(NomEta, "Nom~]'"+valNom+"'"...
	+" ET Rs~]'"+ValDate+"'"...
	+" ET Classes~]'"+ValClasse+"'"...
	+" ET Difficultes~]'"+ValDifficultes+"'"...
	+" ET Pai~]'"+ValPai+"'"...
	+" ET Suites~]'"+ValSuites+"'"...
	+" ET Suivi~]'"+ValSuivi+"'"...
	+" ET Notes~]'"+ValNotes+"'")

FIN


// Parcours des enregistrements filtrés
HLitPremier(NomEta,sRubCléParcours)

TANTQUE PAS HEnDehors()
	//remplir la table
	TableAjouteLigne(Table_recherche,{NomEta + ".Nom",indRubrique},...
	{NomEta + ".Date_int",indRubrique},...
	{NomEta + ".Rs",indRubrique},...
	{NomEta + ".A_voir",indRubrique},...
	{NomEta + ".classes",indRubrique},...
	{NomEta + ".Difficultes",indRubrique},...
	{NomEta + ".Pai",indRubrique},...
	{NomEta + ".Suivi",indRubrique},...
	{NomEta + ".Suites",indRubrique},...
	{NomEta + ".Notes",indRubrique},...
	{NomEta + ".Archiver",indRubrique})
	
	HLitSuivant(NomEta, sRubCléParcours,ccSansCasse)
	
FIN

// On désactive le filtre
HDésactiveFiltre(NomEta)


Merci de m'aider, @+

Cette contribution était de : http://old.wdforge.org/newbb/viewtopic.php?forum=17&topic_id=5474&post_id=22471