|
Meilleure solution pour faire une recherche multi criteres |
|
Anonyme
|
bonjour j'ai une fenetre avec un 10aine de champs (saisie, combo) quelle est la meilleur solution pour effectuer une recherche multicritere sur la base ?
j'ai par exemple : Nom, date d'achat : Du ..... au ...., couleur, région......
merci
Contribution le : 11/04/2006 08:11
|
|
|
Re: Meilleure solution pour faire une recherche multi criteres |
|
Animateur WDF
Inscrit: 19/01/2004 13:48
De www.sigmasys.fr
Post(s): 988
|
Bonjour,
Vous pouvez passer par une requête SQL par exemple en saisissant le code de la requête dans une chaîne, puis l'exécuter.
Bon dév.,
Totof
Contribution le : 11/04/2006 08:37
|
|
|
Re: Meilleure solution pour faire une recherche multi criteres |
|
Anonyme
|
merci de m'avoir répondu je connais pas trop les requetes. pouvez vous m'éclairer sur votre manipulation
bonne journée
Contribution le : 11/04/2006 12:34
|
|
|
Re: Meilleure solution pour faire une recherche multi criteres |
|
Animateur WDF
Inscrit: 26/06/2002 16:24
De wdforge.org
Post(s): 2822
|
Bonjour Prenons par exemple une recherche sur le nom prénom dans une fiche élève... Cela donnera : sSQL est une chaine = "SELECT * FROM ELEVE WHERE "
// on complete alors la condition selon le remplissage des critères
SI (SAISNOMDEBUT<>"" ET SAISNOMFIN<>"") ALORS
sSQL += " NOM BETWEEN '" + SAISNOMDEBUT + "' AND '" + SAISNOMFIN +"'"
SINON
SI SAISNOMFIN="" ALORS
// QUE debut, on prends les noms contanent la chaine (voirs la clause LIKE et les %)
sSQL += " NOM LIKE '%" + SAISNOMDEBUT + "%'"
FIN
FIN
on peut compléter avec le choix sur le prénom Exécution de la requete : sSQL est une Source de Données
SI PAS hExécuteRequêteSQL(sSQL,hRequeteDefaut,cSQL) alors
Erreur(hErreurInfo())
SINON
// Envois le résultat dans une table mémoire
hLitPremier(sSQL)
TANTQUE pas hEnDehors(sSQL)
info(sSQL.NOM,sSQL.PRENOM)
hLitSuivant(sSQL)
FIN
// libère la source de données
hAnnuleDéclaration(sSQL)
Voila... A vous de constituer progressivement la syntaxe de votre requête en fonction de vos critères de sélection. un petit plus : pour ajouter les AND entre les conditions du where. Si cSQL<>"" alors sSQL+= " AND "
cSQL+= "...condition..."
Contribution le : 11/04/2006 12:51
|
|
|
Re: Meilleure solution pour faire une recherche multi criteres |
|
DSI WDF
Inscrit: 12/09/2004 11:07
De aude
Post(s): 279
|
Bonjour, petite info supplementaire, vous avez la possibilité d'utiliser une fenetre de recherche multi-critères dans la création des fenêtres prédéfinies. Elle permet de choisrs les résultats en fonction de critères tel que : - "Egal à" - "Commence par" - "Est Null" - ... et suivre l'assistant. Espérant avoir aidé, bon dev!
Contribution le : 11/04/2006 13:08
|
_________________
...
|
|
Re: Meilleure solution pour faire une recherche multi criteres |
|
Stagiaire WDF
Inscrit: 04/11/2003 13:31
De Belgique
Post(s): 42
|
Bonjour,
Exemple de code qui fonctionne correctement
Les critères sont repris dans des champs de saisies qui renvois NULL si vide < RNom, RAdresse .... >
LOCAL SrcReq est une source de données sCodeSQL est une chaîne
HAnnuleDéclaration(SrcReq)
// [< Code de la requête >] sCodeSQL = [ SELECT [IDContact], [Nom], [Adresse], [CodePostal], [Ville], [NomContact], [Activité] FROM Contact WHERE [Nom] LIKE '%1%' AND [Adresse] LIKE '%%%2%%' AND [CodePostal] LIKE '%3%%' AND [Ville] LIKE '%%%4%%' AND [Activité] LIKE '%%%5%%' AND [NomContact] LIKE '%%%6%%' ORDER BY [Nom] ASC ]
// [< Construire requêtes >] sCodeSQL = ChaîneConstruit(sCodeSQL, RNom, RAdresse, RCpostal, RVille, RActivité, RContact)
SI PAS HExécuteRequêteSQL(SrcReq, sCodeSQL) ALORS Ouvre(MsgBox, " Requête", ">>> Erreur d’initialisation de la requête"+RC+HErreurInfo(), 2) RETOUR FIN
NbEnreg = HNbEnr(SrcReq)
SI NbEnreg > 0 ALORS
TableRecherche..FichierParcouru = "SrcReq" TableAffiche(TableRecherche, taDébut) EcranPremier(TableRecherche) SINON Ouvre(MsgBox, " Recherche", ">>> Aucun enregistrement pour cette sélection ...", 1, 1, 280, 225) HAnnuleDéclaration(SrcReq) ExécuteTraitement(BTAnnulCritere,trtClic) FIN
Cordialement
Albert
Contribution le : 11/04/2006 14:13
|
|
|
Re: Meilleure solution pour faire une recherche multi criteres |
|
Anonyme
|
bonjour,
ca m'a beaucoup aidé... J'avais oublié, mes champs de saisie, ils concernent 4 fichiers !!!!! j'ai rajouter ca apres le FROM.
je bloque au niveau de l'affichage dans ma table. de quel type doit etre la table ? Mémoire ?
car rien ne s'affiche dans ma table
bonne journée
Contribution le : 12/04/2006 13:15
|
|
|
Re: Meilleure solution pour faire une recherche multi criteres |
|
DSI WDF
Inscrit: 12/09/2004 11:07
De aude
Post(s): 279
|
Bonjour Faite un tour sur le post : Tablebon dev!
Contribution le : 12/04/2006 13:25
|
_________________
...
|
|
Re: Meilleure solution pour faire une recherche multi criteres |
|
Anonyme
|
je ne sais pas sur quelle base et sur quelle volume ca va tourner, mais eviter des pb de perf avec autant de like je prefererais une syntaxe du genre :
requeteSQL = " SELECT champs FROM MesTables where 1 = 1 "
et concaténer la suite uniquement avec les criteres renseignés.
Rien ne sert de faire un like "%" sur les prenoms si l'utilisateur n'a pas renseigner de prenom (donc dans le cas ou il faut tous les prendre)
Mais, ca ne concerne que des volumes significatifs.
Contribution le : 12/04/2006 17:23
|
|
|
Re: Meilleure solution pour faire une recherche multi criteres |
|
Anonyme
|
bonsoir, voila ou j'en suis.
vvin est un Variant
vpays est un Variant
vregion est un Variant
vappellation est un Variant
vvin=Vin..ValeurAffichée
vpays=Pays
vregion = Région
vappellation = Appellation..ValeurAffichée
Req_recherche.param_nom=Vin..ValeurAffichée
Req_recherche.param_pays=Pays
Req_recherche.Param_région = Région
Req_recherche.Param_appellation=Appellation..ValeurAffichée
HExécuteRequête(Req_recherche,hModifieFichier)
//On Vide la table par sécurité
TableSupprimeTout(TableRecherche)
//On rempli la table
//TableRecherche..FichierParcouru = "req_recherche"
ConstruitTableFichier(TableRecherche,Req_recherche,taAvecIdAuto+taRemplirTable)
TableAffiche(TableRecherche)
et voici le code SQL de ma requete REQ_recherche
SELECT Vin.Nom AS Nom,
Vin.Pays2 AS Pays,
Vin.région2 AS Région,
Vin.appellation2 AS Appellation
FROM Vin
WHERE Vin.Nom = {param_nom}
AND Vin.Pays2 = {param_pays}
AND Vin.région2 = {Param_région}
AND Vin.appellation2 = {Param_appellation}
lors de l'execution sous l'éditeur de requete, je passe 1 ou plusieurs parametres et ca fonctionne dans ma fenetre, la table se cree bien avec les bonnes colonnes mais ne se remplie pas. quelqu'un a une idée ? merci d'avance
Contribution le : 12/04/2006 23:14
|
|
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.
|
Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
|