Re: Meilleure solution pour faire une recherche multi criteres

Posté par R&B le 11/4/2006 12:51:48
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..."

Cette contribution était de : http://old.wdforge.org/newbb/viewtopic.php?forum=14&topic_id=3844&post_id=16164