« 1 (2) 3 »


Re: Recherche ( très souple )
Utilisateur WDF
Inscrit:
28/05/2007 18:18
Post(s): 90
Bonjour,
Juste en regardant ce code, je peux dire ... que je n'ai rien compris.
Et, admettons que ce code marche ( je vais le vérifier quand j'en aurais le temps ), comment faire cela pour plusieurs rubriques ?

Contribution le : 03/11/2007 17:15
Créer un fichier PDF de la contribution Imprimer


Re: Recherche ( très souple )
Animateur WDF
Inscrit:
02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
Bonjour,

Pour la recherche souple, le moteur Hyperfile et par défaut ignore la casse et la ponctuation ni les espaces avant et après.

1) La procédure pour Splitter
est une procédure qui permet de remplir un tableau dynamique de chaines en lui passant en paramètre une chaine de valeurs séparées par des virgules

2) Méthode pour prendre différents séparateurs
Cette méthode permet de remplacer les différents séparateurs qui pourrait y avoir lors de la saisie par l'utilisateur et de les transformer par des virgules car le traitement lui attend des virgules comme séparateur. Ainsi l'utilisateur pourra a sa guise utiliser différents séparateur.
Dans mon exemple je traite le ';' les ':' et les espaces, mais on peu en rajouter autant que l'on veux.

3) Recherche Phonétique
La je vous offre une méthode qui va au delà de votre demande en méthode de recherche souple. Cette technique permet à un utilisateur d'avoir la possibilité de mal orthographier les mots qu'il veux rechercher
exemple
dupon
dupond
dupont
Même si l'utilisateur saisie dupond et bien la requête renverra Dupont
n'est-ce pas de l'égalité souple

4) avec plusieurs rubriques
Il peut y avoir autant de rubriques que voulu il suffit
d'alimenter la variable sCondition en fonction des saisie dans les différents champs mis à la disposition de l'utilisateur
Si SansEspace(Champ1) <> "" Alors 
  sCondition += " AND [MaRubrique1] = '" + Champ1..Valeur + "' "
Fin
Si SansEspace(Champ2) <> "" Alors 
  sCondition += " AND [MaRubrique2] = '" + Champ2..Valeur + "' "
Fin

vous pouvez en faire autant que vous en avez besoin.

Contribution le : 05/11/2007 11:13
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer


Re: Recherche ( très souple )
Utilisateur WDF
Inscrit:
28/05/2007 18:18
Post(s): 90
Bonjour,
en faisant ce code ... ça marche pas :
tblVar est un tableau dynamique de 0 chaînes
Ind est un entier
sCondition est une chaîne
sClientRecherche est une chaîne = "dupon"
Rs est une Source de Données
Sql est une chaîne

//On remplie un tableau avec les valeurs voulues
TableauAjoute(tblVar, "Allergie")
TableauAjoute(tblVar, "Asthme")
TableauAjoute(tblVar, "Machine")

//On construit la condition
POUR Ind = 1 A Dimension( tblVar)
	
FIN

SI SansEspace(valNom) <> "" ALORS 
	sCondition += " AND [Nom] = '" + valNom..Valeur + "' "
FIN
SI SansEspace(ValDate) <> "" ALORS 
	sCondition += " AND [Date_int] = '" + ValDate..Valeur + "' "
FIN
SI SansEspace(ValClasse) <> "" ALORS 
	sCondition += " AND [Classes] = '" + ValClasse..Valeur + "' "
FIN
SI SansEspace(ValDifficultes) <> "" ALORS 
	sCondition += " AND [Difficultes] = '" + ValDifficultes..Valeur + "' "
FIN
SI SansEspace(ValPai) <> "" ALORS 
	sCondition += " AND [Pai] = '" + ValPai..Valeur + "' "
FIN
SI SansEspace(ValSuivi) <> "" ALORS 
	sCondition += " AND [Suivi] = '" + ValSuivi..Valeur + "' "
FIN
SI SansEspace(ValSuites) <> "" ALORS 
	sCondition += " AND [Suites] = '" + ValSuites..Valeur + "' "
FIN
SI SansEspace(ValNotes) <> "" ALORS 
	sCondition += " AND [Notes] = '" + ValNotes..Valeur + "' "
FIN

//On construit la requête
Sql =
[
SELECT
WL.Phonétique(Donnee.Nom) As Nom
WL.Phonétique(Donnee.Date_int) As Date_int
WL.Phonétique(Donnee.Classes) As Classes
WL.Phonétique(Donnee.Difficultes) As Difficultes
WL.Phonétique(Donnee.Pai) As Pai
WL.Phonétique(Donnee.Suivi) As Suivi
WL.Phonétique(Donnee.Suites) As Suites
WL.Phonétique(Donnee.Notes) As Notes
FROM 
Donnee
WHERE
Nom LIKE
Date_int LIKE
Classes LIKE
Difficultes LIKE
Pai LIKE
Suivi LIKE
Suites LIKE
Notes LIKE
]
Sql += "'%" + WL.Phonétique(sClientRecherche) + "%'"

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

POUR TOUS Rs
	//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})
FIN


Contribution le : 05/11/2007 11:53
Créer un fichier PDF de la contribution Imprimer


Re: Recherche ( très souple )
Animateur WDF
Inscrit:
02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
Bonjour Le_GnU,

Je ne sais par ou commencer !!!, mais vous mélangez un peu tout sans trop comprendre en effet le principe de fonctionnement
Je vais tenter d'être plus didactique, mais cela est très difficile lorsque l'on ne connait rien du projet ni de la structure de l'analyse.

La première des choses à faire est de savoir réellement ce que l'on doit chercher.

Important et a savoir la recherche
Il me semble que les requêtes SQL ne fonctionne pas sur les champs mémos (A Vérifier) voir le type de la rubrique Notes.

Prennez l'habitude lorsque vous rencontrez un problème de commencer par le plus simplement possible afin de vous familiariser avec les requête SQL

principe de fonctionnement
on déclare une chaine qui va contenir la requête elle même
Sql est une chaine
ensuite une variable qui va contenir le résultat de l'exécution de la requête

Rs est une source de donnees
structure type d'une requête SELECT
SELECT = Pour extraire des données d"une base
FROM = Pour indiquer sur quel fichier l'extraction va se faire
WHERE = pour conditionner la recherche
ORDER BY = pour ordonner le résultat
Dans votre cas commencer par un code simple
Rs est une Source de Données
Sql est une chaîne
sCondition est une chaîne
//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
 Donnees //Apparement le nom du fichier physique
WHERE
 [Nom] = '" + valNom..Valeur + "' "
]

Dans cette dernière ligne le = représente une égalité pur
si vous remplacer = par LIKE ce la signifira qui contient mais encore faut il lui signifier où
pour cela on utilise le caratère %
exemple avec le nom Dupont
LIKE Du% //signifie commence par Du
LIKE %po% //Signifie contient po
LIKE %nt //Signifie fini par nt

maintenant que la requête est créée on l'execute
Si Pas HExecuteRequete( Rs, HRequeteDefaut, Sql ) Alors
 Erreur(HErreurInfo() //Si la requete est mal formulée ce qui est le cas dans votre code
Fin 

Si cette portion de code s'est exécuté sans afficher de message d'alerte alors vous pouvez parcourir le résultat contenu dans la variable Rs
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

seules les données extraites sont accessibles directement via la variable Rs

Tester ce simple code et faites le évoluer petit à petit
A la volée ce que vous devriez avoir
Une procédure pour corrigé les séparateur sur la saisie des difficulté
PROCEDURE CorrigeDifficultes(sValDifficultes)
//On remplace le points virgules par des virgules
sValDifficultes = Remplace( sValDifficultes, ";", "," )
//On remplace les deux points par des virgules
sValDifficultes = Remplace( sValDifficultes, ":", "," )
//On remplace les espaces par des virgules
sValDifficultes = Remplace( sValDifficultes, " ", "," )
Renvoyer sValDifficultes

Procédure pour alimenter le tableau dynamique avec le contenu de ValDifficultes
PROCEDURE Split( ChaineSource est une chaine, CaractereSeparateur est une chaine, bSupprimeEspace est un booléen = Faux )
tbl est un tableau dynamique de 0 chaines
sListe est une chaine = ChaineSource
sUnMot est une chaine
POUR TOUTE CHAINE sUnMot DE SListe SEPAREE PAR CaractereSeparateur
  Si bSupprimeEspace = Vrai Alors
    sUnMot = SansEspace( sUnMot )
  Fin
  TableauAjoute( tbl, sUnMot )
FIN
RENVOYER tbl

//On peut continuer comme çà
Une procédure pour ajouter les conditions
PROCEDURE AjouteCondition( pCondition, pNewCondition )
Si pCondition <> "" alors
pCondition += " AND " + pNewCondition

La 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

SI SansEspace(valNom) <> "" ALORS 
	AjouteCondition(sCondition, " [Nom] LIKE '%" + WL.Phonetique(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)
        tblVal = 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]) + "%' "

"'%" + WL.Phonétique(sClientRecherche) + "%'"
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
WL.Phonétique(Donnee.Nom) As Nom
//Phonétique non nécessaire sur une date
Donnee.Date_int As Date_int
WL.Phonétique(Donnee.Classes) As Classes
//Quel est le type de Classes ?
WL.Phonétique(Donnee.Difficultes) As Difficultes
//Pas de Phonétique sur les valeurs numériques
Donnee.Pai As Pai
WL.Phonétique(Donnee.Suivi) As Suivi
WL.Phonétique(Donnee.Suites) As Suites
//ATTENTION pas de Mémo
WL.Phonétique(Donnee.Notes) As Notes
FROM 
Donnee
WHERE
@sCondition
]

//On remplace la chaine @sCondition par sCondition
Sql = Remplace( Sql, "@sCondition", sCondition ) 
Sql += "'%" + WL.Phonétique(sClientRecherche) + "%'"

//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
HAnnuleDeclaration(Rs)

Code saisie à la volée et pouvant contenir des erreurs

Contribution le : 05/11/2007 14:56
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer


Re: Recherche ( très souple )
Utilisateur WDF
Inscrit:
28/05/2007 18:18
Post(s): 90
Bonsoir,
Citation :
Si cette portion de code s'est exécuté sans afficher de message d'alerte alors vous pouvez parcourir le résultat contenu dans la variable Rs


A l'exécution, j'ai ce méssage d'erreur :

"Une erreur est survenue dans la fenêtre
L'objet Rs n'a pas été trouvé."

En mettant dans une procédure "Tri" ce code :

Rs est une Source de Données
Sql est une chaîne
sCondition est une chaîne
//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
Donnees //Apparement le nom du fichier physique
WHERE
[Nom] LIKE "'%" + valNom..Valeur + "%'"
]

SI PAS HExécuteRequête( Rs, hRequêteDéfaut, Sql ) ALORS
	Erreur(HErreurInfo()) //Si la requete est mal formulée ce qui est le cas dans votre code
FIN 


Infos sur ma BDD :

- Les rubriques concernant la recherche :

Nom = Texte
Date_int = Texte
Classes = Texte
Difficultes = Texte
Pai = Texte
Suivi = Texte
Suites = Texte
Notes = Texte

J'ai une rubrique "Rs", le problème peut venir de la ...
Edit : en renommant les "Rs" en "Rsql", le meme méssage d'erreur !

Contribution le : 05/11/2007 19:22
Créer un fichier PDF de la contribution Imprimer


Re: Recherche ( très souple )
Animateur WDF
Inscrit:
02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
remplacer :
SI PAS HExécuteRequête( Rs, hRequêteDéfaut, Sql ) ALORS
	Erreur(HErreurInfo()) //Si la requete est mal formulée ce qui est le cas dans votre code
FIN 

par
SI PAS HExécuteRequêteSQL( Rs, hRequêteDéfaut, Sql ) ALORS
	Erreur(HErreurInfo()) //Si la requete est mal formulée ce qui est le cas dans votre code
FIN 

Contribution le : 06/11/2007 00:02
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer


Re: Recherche ( très souple )
Utilisateur WDF
Inscrit:
28/05/2007 18:18
Post(s): 90
Bonjour,
maintenant, j'ai "mot Donnee innatendu"

Contribution le : 06/11/2007 11:15
Créer un fichier PDF de la contribution Imprimer


Re: Recherche ( très souple )
Animateur WDF
Inscrit:
02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
Bonjour,

Bon, cela signifie qu'il y a une erreur de syntaxe dans la sql, si vous pouviez mettre le contenu de la variable Sql juste avant son exécution on pourrait peyt-être trouver l'erreur

Contribution le : 07/11/2007 11:52
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer


Re: Recherche ( très souple )
Utilisateur WDF
Inscrit:
28/05/2007 18:18
Post(s): 90
Tout est 2 méssages plus haut, sauf que j'ai remplacé "donneeS" par "donneE"

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
Donnees //Apparement le nom du fichier physique
WHERE
[Nom] LIKE "'%" + valNom..Valeur + "%'"
]

Contribution le : 07/11/2007 13:33

Edité par Le_GnU sur 7/11/2007 13:52:33
Créer un fichier PDF de la contribution Imprimer


Re: Recherche ( très souple )
Animateur WDF
Inscrit:
02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
Bonjour,

Syntaxe d'une SQL:
SELECT
 <Fichier>.<Rubrique1>,
 <Fichier>.<Rubrique2>,
 <Fichier>.<Rubriquen>
FROM
 <Fichier>

1) Dans votre syntaxe je ne vois pas les virgules séparant les différentes rubriques à extraire
2) le nom du fichier spécifié après le 'FROM' ne coïncide pas avec le nom du fichier pour les rubriques.
on devrait si le nom du fichier physique est 'Donnee' avoir:
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 //Apparement le nom du fichier physique
WHERE
[Nom] LIKE "'%" + valNom..Valeur + "%'"
]

Contribution le : 07/11/2007 14:27
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer


Re: Recherche ( très souple )
Utilisateur WDF
Inscrit:
28/05/2007 18:18
Post(s): 90
Bonjour,
maintenant, j'ai "caractère " innatendu"

Contribution le : 07/11/2007 14:36
Créer un fichier PDF de la contribution Imprimer


Re: Recherche ( très souple )
Animateur WDF
Inscrit:
02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
Soyer compréhensible,
si vous ne mettez que les messages d'erreur sans mettre en ligne ce qui à causé l'erreur cela va devenir difficile de vous aider.
Citation :

vous pouviez mettre le contenu de la variable Sql juste avant son exécution

c'est ce qui est exécuté par la commande HExecuteSQL()
par consequent la variable SQL ne devrait plus contenir
"'%" + valNom..Valeur + "%'"
ni le commentaire :
//Apparement le nom du fichier physique

Contribution le : 07/11/2007 16:56
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer


Re: Recherche ( très souple )
Utilisateur WDF
Inscrit:
28/05/2007 18:18
Post(s): 90
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 ...

Contribution le : 09/11/2007 18:52
Créer un fichier PDF de la contribution Imprimer


Re: Recherche ( très souple )
Animateur WDF
Inscrit:
02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
Bonjour,

Je finis par me demander si vous comprenez le code que vous écrivez

Vous construisez correctement la condition de sélection de vos enregistrement sCondition mais vous ne l'appliquez pas dans la requête!
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
WL.Phonétique(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
WHERE
@sCondition
ORDER BY Nom
]

//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)

J'ai rajouter dans la variable Sql la condition de sélection contenu dans sCondition
==>WHERE @sCondition
J'ai rajouter aussi un tri sur le nom
==>ORDER BY Nom
ainsi que la Phonétique sur le Nom

Contribution le : 09/11/2007 23:37
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer


Re: Recherche ( très souple )
Utilisateur WDF
Inscrit:
28/05/2007 18:18
Post(s): 90
Bonjour,
je ne comprend pas le "@scondition"

J'ai une erreur "mot ( innatendu"

Contribution le : 10/11/2007 10:59
Créer un fichier PDF de la contribution Imprimer


Re: Recherche ( très souple )
Animateur WDF
Inscrit:
02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
Bonjour,

Dire qu'il y a une erreur c'est bien mais si vous ne mettez pas le contenu de la variable qui pose problème on ne peu pas deviner.

mettez sur le site le contenu de la variable sCondition avant l'exécution de la ligne:
SI PAS HExécuteRequêteSQL( Rs, hRequêteDéfaut, Sql ) ALORS

Contribution le : 10/11/2007 16:56
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer


Re: Recherche ( très souple )
Utilisateur WDF
Inscrit:
28/05/2007 18:18
Post(s): 90
Contenu :
SI SansEspace(ValClasse) <> "" ALORS 
	AjouteCondition(sCondition, " [Classes] = '" + ValClasse..Valeur + "' ")
FIN


sCondition = " "

Contribution le : 10/11/2007 17:36
Créer un fichier PDF de la contribution Imprimer


Re: Recherche ( très souple )
Animateur WDF
Inscrit:
02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
Bonjour,
En effet une erreur dans la procédure
PROCEDURE AjouteCondition( pCondition, pNewCondition )
Si pCondition <> "" alors
  pCondition += " AND " 
Fin
pCondition += pNewCondition

La précédente procédure ne pouvait se remplir

Contribution le : 10/11/2007 18:05
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer


Re: Recherche ( très souple )
Utilisateur WDF
Inscrit:
28/05/2007 18:18
Post(s): 90
Meme erreur mais cette fois, ici :

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


Le point d'arret étant a la ligne "ajouteCondition"

Edit : bug corrigé en supprimant le " AND"

Meme erreur a cette ligne :
SI SansEspace(ValSuivi) <> "" ALORS 
	AjouteCondition( sCondition," [Suivi] = '" + ValSuivi..Valeur + "' " )
FIN

Contribution le : 10/11/2007 18:32

Edité par Le_GnU sur 10/11/2007 19:00:41
Créer un fichier PDF de la contribution Imprimer


Re: Recherche ( très souple )
Animateur WDF
Inscrit:
02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
Bonjour,

Une fois de plus vous mettez le code écrit au lieu de mettre la syntaxe générer contenu dans sCondition, c'est dans cette variable que les erreurs vont être visibles
mais a lire le code on voit qu'il faut remplacer:
AjouteCondition(sCondition, " AND [Difficultes] = '" + ValDifficultes..Valeur + "' ")

par
AjouteCondition(sCondition, " [Difficultes] = '" + ValDifficultes..Valeur + "' ")

le 'AND' ne doit être passé en paramêtre puisqu'il est automatiquement ajouté par la fonction AjouteCondition

Contribution le : 10/11/2007 19:01
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant
« 1 (2) 3 »




Enregistrer votre réponse
CompteNom   Mot de passe   Authentification
Message:


Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2