Fantominuss
Messages postés5Date d'inscriptionmercredi 22 juin 2016StatutMembreDernière intervention30 juin 2016
-
Modifié par Fantominuss le 23/06/2016 à 16:22
nagaD.scar
Messages postés4271Date d'inscriptionsamedi 8 septembre 2007StatutMembreDernière intervention 4 janvier 2023
-
24 juin 2016 à 11:02
Bonjour,
Je vous expose mon problème :
J'ai un champ qui permet de faire des recherches par mot clé dans la table de ma bdd. Afin de filtrer les demandes, j'ai fait une checkboxList, (ADV, Logistique, Finance, Administration...). Si un utilisateur coche la rubrique "logistique" la recherche lancée grace au mot clé ne renverra que des résultats concernant la rubrique "logistique". Le problème c'est que quand aucune rubrique n'est cochée, et que l'utilisateur appuie sur "OK" pour lancer la recherche cela me génère une OdbcException, et je ne sais pas comment la gérer, j'ai tester quelque code, seulement il est totalement ignoré, il n'a aucun effet, l'exception s'affiche toujours et pas mon message d'erreur.
Voici le code concernant le filtrage des requêtes:
string word = tbSearch.Text;
string strSql = @"SELECT CAST(ID as VarChar(50)) ID, Aggregation, DateDerniereSolution, DateDescription, DerniereSolution, DescriptionDemande, FileDeTraitement, NomContact, Numero, SousRubrique, TitreDemande FROM cfao_DigiHelp_index.DigiHelpData WHERE ( 1 = 1 )";
string selectedValue = ""; bool IsFirst = false; strSql += @" AND ("; foreach (ListItem item in CheckboxID.Items) {
if (item.Selected) { selectedValue += item.Value ; if (IsFirst) { strSql += " OR "; } strSql += " SousRubrique Like '%" + selectedValue + "%' "; IsFirst = true; }
if (CheckboxID.SelectedIndex == -1) { Label2.Visible = true; Label2.Text = "Veuillez cocher au moins une rubrique"; } }
strSql += @" )";
if (!string.IsNullOrEmpty(word)) { strSql += @" AND (DescriptionDemande LIKE '%" + word + "%' OR TitreDemande LIKE '%" + word + "%') "; }
Quelqu'un sait-il comment gérer une Exception Odbc ?
Bon en fait je m y suis un peu plus penché et il y a 2/3 trucs qui ne vont pas dans ton code, du coup je l'ai repris :
if (CheckboxID.SelectedIndex == -1)
{
Label2.Visible = true;
Label2.Text = "Veuillez cocher au moins une rubrique";
}
else
{
Label2.Visible = false; /*si l utilisateur a fait un passage sans sélection, ca restera affiché: on la retire donc*/
Label2.Text = "";
strSql += "AND (";
foreach (ListItem item in CheckboxID.Items)
{
if (item.Selected)
{
selectedValue = item.Value ; /*pas de += car sinon tu concatènes toutes les chaines de caractères en fonction de la séléction*/
if (IsFirst)
{
strSql += " OR ";
}
strSql += " SousRubrique Like '%" + selectedValue + "%' ";
IsFirst = true;
}
}
}
naga
Fantominuss
Messages postés5Date d'inscriptionmercredi 22 juin 2016StatutMembreDernière intervention30 juin 2016 24 juin 2016 à 10:38
Salut merci beaucoup pour ta réponse, le sujet sur openclassroom ne concernait pas l'exception ODBC, du coup mon code marche maintenant meric a toi :)
nagaD.scar
Messages postés4271Date d'inscriptionsamedi 8 septembre 2007StatutMembreDernière intervention 4 janvier 202316 24 juin 2016 à 11:02
Modifié par nagaD.scar le 24/06/2016 à 10:28
du coup si aucuns filtres tu te retrouve avec qui lève l exception.
Du coup le plus simple serai de faire
Ce n'est qu'une possibilité, y en a toujours pleins d'autres ^^
naga
Modifié par nagaD.scar le 24/06/2016 à 10:30
naga
24 juin 2016 à 10:38
24 juin 2016 à 11:02
naga