Re: Recherche ( très souple )

Posté par Le_GnU le 9/11/2007 18:52:38
Bonsoir,
Voila le code de ma procédure "principale" :

tblVar est un tableau dynamique de 0 chaînes
Ind est un entier
sCondition est une chaîne
Rs est une Source de Données
Sql est une chaîne
sClientRecherche est une chaîne

// On efface la table
TableSupprimeTout(Table_recherche)


SI SansEspace(valNom) <> "" ALORS 
	AjouteCondition(sCondition, " [Nom] LIKE '%" + WL.Phonétique(valNom..Valeur) + "%' " )
FIN
SI SansEspace(ValDate) <> "" ALORS 
	AjouteCondition(sCondition, " [Date_int] = '" + ValDate..Valeur + "' ")
FIN
SI SansEspace(ValClasse) <> "" ALORS 
	AjouteCondition(sCondition, " [Classes] = '" + ValClasse..Valeur + "' ")
FIN
SI SansEspace(ValDifficultes) <> "" ALORS 
	ValDifficultes = CorrigeDifficultes(ValDifficultes)
	tblVar = Split( ValDifficultes, ",", Vrai )
	AjouteCondition(sCondition, " AND [Difficultes] = '" + ValDifficultes..Valeur + "' ")
	//On ajoute les conditions à partir du tableau dynamique
	POUR Ind = 1 A Dimension( tblVar)
		AjouteCondition( sCondition , RC + " [Difficultes] LIKE '%" + WL.Phonétique(tblVar[Ind]) + "%' ")
	
	FIN
FIN
SI SansEspace(ValPai) <> "" ALORS 
	AjouteCondition(sCondition," [Pai] = '" + ValPai..Valeur + "' ")
FIN
SI SansEspace(ValSuivi) <> "" ALORS 
	AjouteCondition( sCondition," [Suivi] = '" + ValSuivi..Valeur + "' " )
FIN
SI SansEspace(ValSuites) <> "" ALORS 
	AjouteCondition( sCondition," [Suites] = '" + ValSuites..Valeur + "' " )
FIN
SI SansEspace(ValNotes) <> "" ALORS 
	AjouteCondition( sCondition, " [Notes] = '" + ValNotes..Valeur + "' ")
FIN

//On construit la requête
Sql =
[
SELECT
Donnee.Nom As Nom,
Donnee.Date_int As Date_int,
Donnee.Classes As Classes,
Donnee.Difficultes As Difficultes,
Donnee.Pai As Pai,
Donnee.Suivi As Suivi,
Donnee.Suites As Suites,
Donnee.Notes As Notes
FROM
Donnee
]


//On execute la requete
Sql = Remplace( Sql, "@sCondition", sCondition )
SI PAS HExécuteRequêteSQL( Rs, hRequêteDéfaut, Sql ) ALORS
	Erreur( HErreurInfo())
	RETOUR
FIN

//On rempli la table
POUR TOUS Rs
	//remplir la table
	TableAjouteLigne(Table_recherche,Rs.Nom,...
	Rs.Date_int,...
	Rs.classes,...
	Rs.Difficultes,...
	Rs.Pai,...
	Rs.Suivi,...
	Rs.Suites,...
	Rs.Notes)
FIN
//Libération de la ressource
HAnnuleDéclaration(Rs)


En executant ce code, je vois dans ma liste mes clients.
L'ennui, c'est que ca ne marche pas comme sa evrait marcher : aucun de mes clients n'est trié !
Dans une fenetre "tri" j'ai mes champs pour rechercher mais, ca ne recherche pas ...

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