Condition sur un WHERE dans une requete [Résolu]

Signaler
Messages postés
32
Date d'inscription
mardi 29 juillet 2008
Statut
Membre
Dernière intervention
14 avril 2009
-
Messages postés
130
Date d'inscription
mercredi 25 juin 2008
Statut
Membre
Dernière intervention
13 août 2008
-
Hello à tous

Alors voila moi j'ai une page sur laquelle l'utilisateur coche un 'radiobutton' dans une liste
A chaque bouton est affecté une valeur que j'utilise comme variable dans le WHERE de ma requete.

J'aimerai que le WHERE soit ignoré si l'utilisateur selectionne un bouton de la meme liste et que j'appelle "TOUTES" (les boutons designe des categories) et que du coup je puisse recuperer les valeurs lier a TOUTES les categories

J'espere avoir été suffisamment clair dans mon explication
Merci a ceux qui sauront m'aider ;)

Nico

Impossible is Nothing !

6 réponses

Messages postés
130
Date d'inscription
mercredi 25 juin 2008
Statut
Membre
Dernière intervention
13 août 2008
2
Salut,

Désolée je me suis peut être un peu enflammée surtout qu'il n'est pas obligatoire de passer par le code-behind. Pour ton info le code se place bien dans la page aspx correspondante mais là le code c'est du C# alors que toi tu fait du VB.

Bon sinon pour ton affaire j'ai eu une idée :
Il faut que tu donne une valeur à ton ListItem pour "toutes" du genre value="toutes".
Ensuite dans ton ControlParameter tu rajoute la propriété  Name="CAT" pour pouvoir l'utiliser mieux dans ton select.
Enfin ton SelectCommand tu le remplace par SelectCommand

"SELECT DISTINCT [marque] FROM [laveuses] WHERE ([categorie] @CAT) OR (@CAT = 'toutes')"ce qui permettra de dire que si la variable @CAT est égale à "toutes" alors tu affiche toutes les lignes sinon uniquement celles spécifiées. Juste je ne suis pas sûre pour les ' ' avec Access et si ça marche pas teste avec " " . De toute façon tu peux aussi tester ta requete, moi j'ai essayée et ça fonctionne bien.

@Pluche

<hr />
Si une réponse vous convient n'oubliez pas le réponse acceptée !!!
Ca aidera beaucoup d'autres personnes
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
27
Salut

Une solution est d'utiliser le
 SQL += " WHERE 1=1 " --> tous les resultats
if(....){ --> Filtre conditionnel  SQL +" AND champs @param1";
 Cmd[@param1] = "Valeur";
}

Apres tu peux utiliser un stringbuilder pour + de performance
Messages postés
130
Date d'inscription
mercredi 25 juin 2008
Statut
Membre
Dernière intervention
13 août 2008
2
Salut,

Pour ta requete tu peut creer un string que tu remplis au fur et à mesure (je pense que c'est ce que tu fait déjà) du type :
string

requete =
"select * from MaTable";

int test = 0;

//test qui regarde si ton RadioButton sp‚cifique est coche

//dans ce cas il ne finit pas la requete

if (RadioButtonList1.Items[0].Selected ==
true){

}

else{

      for (
int i = 1; i < RadioButtonList1.Items.Count; i++)      {

            if (RadioButtonList1.Items[i].Selected ==
true)            {

                    test++;

                  //si c'est le premier coche

                  if (test == 1)                  {

                           requete +=

"where";                           requete += RadioButtonList1.Items[i].Value.ToString();
                           requete +" ";                           requete += RadioButtonList1.Items[i].Text.ToString();

                   }

                  //pour les autres

                  else                  {

                        requete +=

"and";                        requete += RadioButtonList1.Items[i].Value.ToString();
                        requete +" ";                        requete += RadioButtonList1.Items[i].Text.ToString();

                    }

            }

}

Par contre, pour gérer le nom de tes champs je suis partie du principe que tu donne à Value de ton radiobutton le nom de ceux-ci et à Text la valeur que tu veux y comparer. Ce n'est bien sur qu'un exemple.

@Pluche

<hr />
Si une réponse vous convient n'oubliez pas le réponse acceptée !!!
Ca aidera beaucoup d'autres personnes
Messages postés
32
Date d'inscription
mardi 29 juillet 2008
Statut
Membre
Dernière intervention
14 avril 2009

euh ouais....en fait j'ai oublié de dire que j'étais pas un kador de la prog....j'ai po tout compris

en dessous voila ce que j'ai deja ecrit (dans la page directement):

Liste Radio:

<

asp:RadioButtonList
ID= "catselect"
runat="server"
RepeatColumns="2"

RepeatDirection="Horizontal"
AutoPostBack="True"
CellPadding="0"

CellSpacing="0"
Width="400px">

<asp:ListItem>Toutes
</asp:ListItem>

<asp:ListItem
Value="pl">Petite Laveuse
</asp:ListItem>

<asp:ListItem
Value="ml">Moyenne Laveuse
</asp:ListItem>

<asp:ListItem
Value="gl">Grosse Laveuse
</asp:ListItem>

<asp:ListItem
Value="pla">Petite Laveuse Autotract‚e
</asp:ListItem>

<asp:ListItem
Value="gla">Moyenne Laveuse Autotract‚e
</asp:ListItem>

<asp:ListItem
Value="plc">Petite Laveuse … Cƒble
</asp:ListItem>

</asp:RadioButtonList>

la "value" est telle qu'elle dans la base de données, c'est a dire que pour chaque modele, il y'a une marque et une categorie (pla, plc, gl.....) correspondant.
NB: les marques peuvent se retrouver dans pluisieurs catégories....d'ou le premier bouton (sans "value" attribuée) "TOUTES" et auquel je souhaite soit donner une "value" soit y ajouter une condition ....

Requete:

<

asp:AccessDataSource
ID ="AccessDataSource1"
runat= "server"


DataFile ="~/App_Data/matos.mdb"

SelectCommand
=
"SELECT DISTINCT [marque] FROM [laveuses] WHERE ([categorie]=?)"
>


<SelectParameters>

<asp:ControlParameter
ControlID ="catselect"


PropertyName="SelectedValue"
/>


</SelectParameters>Le "problème" de cette requete est que il selectionne une marque en fonction de la catégorie sélectionnée en 'radiobutton' et je cherche donc un moyen d'ignorer la catégorie si "TOUTES" est selectionné.

sinon vos codes.....il faut les mettre dans la page direct ou avec le code (.aspx.vb) ?????

Nico

Impossible is Nothing !
Messages postés
32
Date d'inscription
mardi 29 juillet 2008
Statut
Membre
Dernière intervention
14 avril 2009

Waouh....toi t'es un amour ;)
merci nadege :D

en plus j'ai reussi en faisant travaillé mes petite méninges à l'integrer a une deuxième requete qui combine un AND dans le WHERE

euh question ...c'est quoi le truc du "@"...puisque manifestement c'est ca qui a modifié le truc... :p

Merci merci merci beaucoup

Nico

Impossible is Nothing !
Messages postés
130
Date d'inscription
mercredi 25 juin 2008
Statut
Membre
Dernière intervention
13 août 2008
2
De rien
Le @ c'est ce qui va te permettre de pointer vers la variable a laquelle tu as donné ce nom. C'est un pointeur tout bêtement qui dit au programme "va chercher à cet endroit précis".
Bon courage pour la suite.
@Pluche

<hr />
Si une réponse vous convient n'oubliez pas le réponse acceptée !!!
Ca aidera beaucoup d'autres personnes