3 pièce(s) jointe(s)
SQLDataSource et la clause where : comment la rendre optionnelle ?
Bonjour à tous,
En ASP.NET 4.0, j’utilise un SQLDataSource.
Dans la requête select, j’ai une clause Where avec un paramêtre.
Code:
1 2 3 4 5 6 7
|
<asp:SqlDataSource ID="sourceProduit" runat="server" ConnectionString="<%$ ConnectionStrings:BlaBlaConnectionString %>"
SelectCommand=" SELECT Produit.numProduit, Produit.nomProduit
FROM Produit INNER JOIN RelClientProduit ON RelClientProduit.numProduit = Produit.numProduit
WHERE RelClientProduit.numClient = @numClient">
</asp:SqlDataSource> |
Seulement, il arrive que parfois que dans certains cas d’affichage de ma page, je veuille avoir tous mes produits sans la condition sur numClient, autrement dit sans la clause where. 8-)
- Solution bête COPIER COLLER :
La solution la plus bête est de créer deux SQLDataSource, un avec et un sans la clause where, et changer celui qui « binde » ma grille. Sauf que quand on a de multiples paramètres : LOL.
Il y a une autre solution avec un LIKE ‘@numClient’. On donne ‘%’ comme valeur lorsque l’on veut tout selectionner.
Code:
1 2 3
| SELECT Produit.numProduit, Produit.nomProduit
FROM Produit INNER JOIN RelClientProduit ON RelClientProduit.numProduit = Produit.numProduit
WHERE RelClientProduit.numClient LIKE @numClient |
Je ne suis pas arrivé à la faire marcher lors du test dans l’interface de création de datasource… ça plante avec ‘%’ … alors que ça marche lorsque qu’on tape la requête directement dans SQL Management Studio... grrrrrrrrrr :cry:
- Solution avec un autre paramêtre :
Code:
1 2 3 4 5
| SELECT Produit.numProduit, Produit.nomProduit
FROM Produit INNER JOIN RelClientProduit ON RelClientProduit.numProduit = Produit.numProduit
WHERE
((RelClientProduit.numClient = @numClient) AND (@etat = UNSEULCLIENT))
OR (@etat = TOUSLESCLIENTS) |
Ici mon paramètre @etat est donc celui qui dit si oui ou non je veux tous les produit d’un client (@etat = ‘UNSEULCLIENT’) ou tout les produits tout cour (@etat = ‘TOUSLESCLIENTS’).
La requête marche bien dans SQL Server Management Studio et dans le concepteur de requête (première étapes de configurer la source de données)
http://www.developpez.net/forums/att...1&d=1296213150
http://www.developpez.net/forums/att...1&d=1296213145
mais elle ne marche pas @etat = ‘TOUSLESCLIENTS’ à la dernière étape de configurer la source de données… c'est fou ! Elle marchait 3 clics avant...
:arf:
http://www.developpez.net/forums/att...1&d=1296213166
Ca fait 3 jours que je bloque sur ce truc… :cry: je m’en remets donc à vous…
Merci d’avance pour votre aide.:ccool: