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 ASP : Sélectionner tout - Visualiser dans une fenêtre à part
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.
- 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.
- Solution avec LIKE :
Il y a une autre solution avec un LIKE ‘@numClient’. On donne ‘%’ comme valeur lorsque l’on veut tout selectionner.
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
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
- Solution avec un autre paramêtre :
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
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)
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...
Ca fait 3 jours que je bloque sur ce truc… je m’en remets donc à vous…
Merci d’avance pour votre aide.
Partager