[Débutant] SqlException

Résolu
addx_man Messages postés 19 Date d'inscription lundi 5 décembre 2011 Statut Membre Dernière intervention 7 mars 2018 - Modifié le 30 janv. 2018 à 10:40
nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 - 13 mars 2018 à 11:45
Bonjour,

Je suis apprentis et je viens d'intégré une nouvelle entreprise. On m'a confié pour mission de travailler sur une interface qui tourne en ASP.Net avec une base SQL, et dans laquelle je dois corriger une erreur que je n'arrive a pas a résoudre.

J'ai également une question concernant la syntaxe du code suivant:

  foreach (String idHangar in idHangars)
{
if (idHangar != "")
{
if (i == 0)
requeteHangars += " and (z.Id=" + idHangar + " ";
else
requeteHangars += " or z.Id=" + idHangar + " ";
i++;
}
}


A quoi sert la parenthèse en gras/souligné au niveau de z.id=" +idHangar +""; ? De séparateur ? j'ai eu l'impression qu'elle étais en trop mais il y a des parenthèses similaire à d'autres endroits du code.

Je vous poste l'erreur en capture d'écran ainsi que l'interface afficher avant l'erreur, c'est quand ont envoi les filtres que l'erreur apparaît, en espérant que vous pourriez m'apporter une aide !

Merci à vous.






2 réponses

nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 17
30 janv. 2018 à 13:52
Salut,

En l'état tu donnes trop peu d'information: on est pas en mesure de voir toute la construction de la requete.

La parenthèse peu ou non être une erreur, ca va dépendre de tes conditions .. mais vu qu'on ne voit pas toute la construction de la clause, il n y a pas de réponses à donner.

D'après le message d'erreur, il semblerai justement que le problème provienne d'une parenthèse fermante qui en trop.

Bref au final: peux-tu nous montrer toute la construction de ta requête ? (à mininma la construction du where pour au moins vérifier la syntaxe)

naga
1
addx_man Messages postés 19 Date d'inscription lundi 5 décembre 2011 Statut Membre Dernière intervention 7 mars 2018
30 janv. 2018 à 14:23
Sur la requête que j'ai posté, il y a une parenthèse fermente


foreach (String idHangar in idHangars)
{
if (idHangar != "")
{
if (i == 0)
requeteHangars += " and (z.Id=" + idHangar + " ";
else
requeteHangars += " or z.Id=" + idHangar + " ";
i++;
}
}
if (i != 0)
{
requeteHangars += ")";
}



Je pense que le problème viens de la requête SQL, mais il y a trop de données a traité, j'ai vraiment du mal.

Je peu poster le SQL mais je ne sais pas si ça peu aider

Merci pour la réponse en tous cas !
0
nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 17
30 janv. 2018 à 14:30
encore une fois en l'état c'est assez limité, mais ce que l 'on peut surtout voir c'est que dans le cas ou il n'y a pas d'ID dans ta liste, ta requete aura une parenthèse fermante sans avoir été ouverte.

Je te conseil d'essayer de faire ceci:

bool bFilter = false ; 
foreach (String idHangar in idHangars)
{
	if (idHangar != "")
	{
		bFilter = true;
		if (i == 0)
			requeteHangars += " and (z.Id=" + idHangar + " ";
		else
			requeteHangars += " or z.Id=" + idHangar + " ";
		i++;
	}
}
if (bFilter)
{
	requeteHangars += ")";
}


redis moi.

naga
0
Rejoignez-nous