Accueil > Forum > > > > Procedure de recherche
Procedure de recherche
mardi 9 juin 2009 à 18:51:02 |
Procedure de recherche

hardzip
|
Bonjour tout le monde Je suis actuellement entrain de mettre en place un formulaire de recherche avec asp et .NET et j'ai un probleme qui me bloque depuis maintenant 2 jours. Le principe de ma procedure stockée est la suivante: elle recupére les données saisies dans les textbox et suivant le champs elle les compare avec des données de la table. Avec les champs de type "varchar" pas de probleme j'utilise des "LIKE" et ça marche super bien mais concernat les int et autres champs numerique impossible d'y mettre des "LIKE" ce quii fait que les champs numerique doivent OBLIGATOIREMENT etre renseignés pour espérer que la requete nous renvoi un resultat toute aide serai la bienvenue vu que le travail qui m'est confié est assez urgent. Ci dessous le code de ma procedure stockée [code]
ALTER PROCEDURE [dbo].[psRecherche] @PrenomClient varchar(60) = '',@NomClient varchar(60)= '',@CNI_Client bigint = null,@Service int = null,@NumTelClient int = null,@CategorieReq int = null,@TypeReq int = null,@StatutReq int = nullAS BEGIN SELECT Prenom_Client, Nom_Client, NumeroTel_Client, CNI_Client, ID_TypeService, ID_Requete, DateCreation, Adresse_Client, ID_Categorie, ID_Type, ID_StatutFROM RequeteWHERE (CNI_Client = @CNI_Client)AND (Prenom_Client LIKE '%'+@PrenomClient+'%') AND (Nom_Client LIKE '%'+@NomClient+'%')AND (NumeroTel_Client = @NumTelClient)AND (ID_TypeService = @Service)AND (ID_Categorie = @CategorieReq)AND (ID_Type = @TypeReq)AND (ID_Statut = @StatutReq)END
[code]
Merci
|
|
mardi 9 juin 2009 à 19:00:39 |
Re : Procedure de recherche

hardzip
|
Je precise que j'aimerais effectuer des recherche sans pour autant etre obligé de renseigner tous les champs et quand même avoir des resultats suivant les infos que j'ai fournies
|
|
mercredi 24 juin 2009 à 18:02:57 |
Re : Procedure de recherche

nivsql
|
Tu as plusieurs problemes dans cette procédure.
Le premier est que quoi qu'il arrive : Champ = NULL renverra TOUJOURS FAUX ! donc si une seule de tes valeurs numérique n'est pas renseignée ta requete ne retournera AUCUNE données.
Tu dois donc veiller Soit a ce que tes valeurs numériques soient obligatoirement renseignées (ce que tu semble ne pas vouloir d'apres la description de ton probleme).
Tu vas donc devoir changer ton fusil d'epaule et intégrer tous tes parametres en char ou varchar et SURTOUT ne pas les initialiser a null.
Une fois cela fait tu vas devoir abuser de la fonction CAST tel que :
SELECT Prenom_Client, Nom_Client, NumeroTel_Client, CNI_Client, ID_TypeService, ID_Requete, DateCreation, Adresse_Client, ID_Categorie, ID_Type, ID_Statut FROM Requete WHERE (Cast(CNI_Client as VARCHAR) Like '%'+@CNI_Client+'%') AND (Prenom_Client LIKE '%'+@PrenomClient+'%') AND (Nom_Client LIKE '%'+@NomClient+'%') AND (Cast(NumeroTel_Client as VARCHAR) like '%'+ @NumTelClient +'%') AND (Cast(ID_TypeService as VARCHAR) like '%'+@Service+'%') AND (Cast(ID_Categorie as VARCHAR) like '%'+ @CategorieReq +'%') AND (Cast(ID_Type as VARCHAR) like '%'+ @TypeReq +'%') AND (Cast(ID_Statut as VARCHAR) like '%' + @StatutReq +'%')
Je te le dis tout de suite, un dev de chez moi me fait un truc comme ca je le crucifie sur place. Cette methode est TRES SALE et tu a toutes les chances d'écrouler les performances de ta requete sur des volumetrie importante car en utilisant le cast de cette maniere tu empechera le moteur SQL d'utiliser le moindre index.
La maniere propre est de garder tes numérique et de construir ta requete dynamiquement en fonction des champs que tu as en entré.
ta procédure devrais resembler a ca (je suis pas sur a 100% de la synthaxe):
CREATE PROCEDURE [dbo].[psRecherche] @PrenomClient varchar(60) = '', @NomClient varchar(60)= '', @CNI_Client bigint = null, @Service int = null, @NumTelClient int = null, @CategorieReq int = null, @TypeReq int = null, @StatutReq int = null AS BEGIN DECLARE dynreq varchar(8000) SET @dynreq ='SELECT Prenom_Client, Nom_Client, NumeroTel_Client, CNI_Client, ID_TypeService, ID_Requete, DateCreation, Adresse_Client, ID_Categorie, ID_Type, ID_Statut' SET @dynreq = @dynreq +' FROM Requete WHERE (Prenom_Client LIKE ''%''+@PrenomClient+''%'')AND (Nom_Client LIKE ''%''+@NomClient+''%'')' IF @CNI_Client IS NOT NULL SET @dynreq = @dynreq + ' AND (CNI_Client = @CNI_Client)' IF @NumTelClient IS NOT NULL SET @dynreq = @dynreq + ' AND (NumeroTel_Client = @NumTelClient)' IF @Service IS NOT NULL SET @dynreq = @dynreq + ' AND (ID_TypeService = @Service)' IF @CategorieReq IS NOT NULL SET @dynreq = @dynreq + ' AND (ID_Categorie = @CategorieReq)' IF @TypeReq IS NOT NULL SET @dynreq = @dynreq + ' AND (ID_Type = @TypeReq)' IF @StatutReq IS NOT NULL SET @dynreq = @dynreq + ' AND (ID_Statut = @StatutReq)' execute(@dynreq) END
|
|
mercredi 24 juin 2009 à 19:22:55 |
Re : Procedure de recherche

nivsql
|
Voila un exemple de la solution propre qui marche sur la base exemple de microsoft, adventureWorks :
PROCEDURE [dbo].[psRecherche] @PrenomClient as varchar(60), @NomClient as varchar(60), @CNI_Client as bigint AS DECLARE @dynreq varchar(8000) BEGIN SET @dynreq ='SELECT *' SET @dynreq = @dynreq +' FROM Person.Contact WHERE (FirstName LIKE ''%''+'''+@PrenomClient+'''+''%'')AND (LastName LIKE ''%''+'''+@NomClient+'''+''%'')' IF @CNI_Client IS NOT NULL SET @dynreq = @dynreq + ' AND (ContactID = '+cast(@CNI_Client as varchar)+')' PRINT @dynreq execute(@dynreq) END
Tu peux t'en inspirer pour retravailler ta proc.
|
|
Cette discussion est classée dans : int, and, client, id, procedure
Répondre à ce message
Sujets en rapport avec ce message
Probleme avec une requete [ par deadstar2 ]
Bonjour à tous, Je n'ai pas un excellent niveau en sql, j'aimerais faire appel à vos connaissances pour une requete dont je n'arrive pas à obtenir ce
Faire plusieurs if dans un procedure stockee [ par chris81 ]
bonjour,comment puis je faire pour verifier plusiseurs if dans la meme procedure stockee c'est a direif not exist(SELECT Id FROM...) et if not exists(
Selectionner les lignes dont un champ apparait plusieurs fois [ par bluebird_29200 ]
Bonjour a tous ! sur la table reservations client_id | transaction_id je cherche a faire ressortir les client_id dont le nombre d'apparitions dep
probleme de AND , = [ par sheorogath ]
bonjour a tousvoila m'etant mis un peu a la programmation de base de donnees en java j'ai commence le sqlj'ai trois tablele point commun de c'est tabl
set d'une variable retourne null [ par bootchoz ]
salut !qu'est-ce qui ne va pas dans ma procédure ?quelqu'un peut m'aider ? pourquoi @id_pers vaut null apres le set ?merci d'avance...CREATE PROCEDURE
conversion varchar en int [ par Boulet1 ]
Bonjour je travaille sur SQL server et je cherche a transformer des champs varchar en int mais je ne trouve pas la solution.Quand je procède comme cel
Peut-on insérer des valeurs dans une table de jointure à l'aide d'un trigger? [ par gero123 ]
Bonjour à tous,J'aimerais vous soumettre une question qui me bloque depuis un certain temps.Au nieau de mon MCD, j'ai une entité Client avec pour iden
traduction d'une requtte sql [ par 071714016 ]
j'ai un problème avec une version SQL 4.0 il ne reconnait pas "not in (select" "select * from chat where recepteur='$idlogin' and etat_r!=1 and emeteu
Nombre de requête imbriquer max??? [ par Polack77 ]
Bonjour , Je développe acculement une appli (en VB) qui gère une base de données. Mon problème est que je dois être compatible avec un maximum de SGBD
probleme de groupe by sql server [ par wally88 ]
Bonjour voila j'ai une galere avec Group by en sql de sql serveur Avec sql serveur il faut apprement mettre tout les champs que l'on veux dans un cert
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|