hfdz
Messages postés8Date d'inscriptionsamedi 22 novembre 2008StatutMembreDernière intervention12 juin 2012
-
2 janv. 2012 à 15:04
hfdz
Messages postés8Date d'inscriptionsamedi 22 novembre 2008StatutMembreDernière intervention12 juin 2012
-
4 janv. 2012 à 17:02
Bonjour a tous
j'espere que vous pourrez m'aider tres rapidement
voila pour mon programme en java j'ai entre autre une requete qui est la suivante
req"SELECT num_dossier,Date_dossier,Commune,Bien,Type_Acte from dossier where (commune '"+comm+"' or num_dossier='"+numd+"'or Bien='"+bien+"'or Type_Acte='"+typea+"'";
celle ci me renvoi le resultat voulu sans probleme mais quand je rajoute a la fin un LIKE comme ceci
req"SELECT num_dossier,Date_dossier,Commune,Bien,Type_Acte from dossier where (commune '"+comm+"' or num_dossier='"+numd+"'or Bien='"+bien+"'or "
Type_Acte='"+typea+"'or Personnes Like ('%"+TPers+"%'))";
ça fausse tout le resultat
je ne vois pas le probleme
hfdz
Messages postés8Date d'inscriptionsamedi 22 novembre 2008StatutMembreDernière intervention12 juin 2012 2 janv. 2012 à 16:49
Bonjour et merci pour la reponse rapide
en fait voila c'est un moteur de rechrche
quand je laisse la partie avec le LIKE si il y a qqchose de rempli dans la variable "+TPers+" il fait la selection en la prenant en compte mais si c'est une autre variable qui est renseigné comme +typea+, la c'est comme si rien n'etait mis c'est a dire qu'il prends le tout
Lyle56
Messages postés240Date d'inscriptionjeudi 1 mai 2008StatutMembreDernière intervention19 juillet 20122 4 janv. 2012 à 11:04
Bonjour,
Pour t'expliquer ton probléme :
Lorsque tu fait un like tu peut faire aussi sur du "vide", et comme ta syntaxe lui dit de prendre tout ce qui existe avant ou aprés le "vide" cela revient à tout selectionné.
Ensuite juste une remarque : On ne construit JAMAIS (j'insiste la dessus) une requéte sql sans avoir vérifié les variables saisies par un utilisateur. J'espére que dans ton code tu as une méthode qui nettoie les saisies avant de faire ta requéte.
Pour revenir à ton probléme :
Une simple condition devrais suffire :
req"SELECT num_dossier,Date_dossier,Commune,Bien,Type_Acte from dossier where (commune '"+comm+"' or num_dossier='"+numd+"' or Bien='"+bien+"' or "Type_Acte='"+typea+"' ";
if(TPers != null && TPers != "") {
req += " or Personnes Like ('%"+TPers+"%'))";
}
Voila en espérant que cela t'aide.
Sans maitrise, la puissance n'est rien
Il ne faut pas vendre la peau de l'ours, non il ne faut pas.
hfdz
Messages postés8Date d'inscriptionsamedi 22 novembre 2008StatutMembreDernière intervention12 juin 2012 4 janv. 2012 à 17:02
Bonjour
et un grand merci pour vos réponses rapides et vos conseils
mais ça ne résout pas mon problème,
d'apres ce que tu me propose, si je ne mets rien dans le champ personne, il ne devrai donc pas le prendre en consideration et faire la recherche avec ce que je lui fournit via les autres champs.
or une fois que je rajoute ces ligne
if(TPers != null && TPers != "") {
req += " or Personnes Like ('%"+TPers+"%'))";
}
il ne prend plus en consideration les autres champs, si je ne fournis pas Les personnes, et que je fournis un num de dossier valide, il me donne tout
alors qu'il devrait me donner uniquement l'enregistrement ayant ce num de dossier