cs_rachtout
Messages postés17Date d'inscriptionjeudi 8 octobre 2009StatutMembreDernière intervention 5 juillet 2011
-
22 mai 2011 à 19:06
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 2015
-
23 mai 2011 à 12:03
Bonsoir à tous, voilà ça fait deux jours que je bloque sur ce point et je cherche votre aide.je développe une application avec c#(winform)et j'ai dans ma forme deux datetimepicker une pour indiquer la date de début l'autre pour date de fin et l'utilisateur à la main de choisir les dates à partr des deux datetimepicker et ces deux dates seront utilisées dans ma requête sql pour afficher des données pour une date compris entre les deuxx dates choisies par l'utilsateur.Voilà ma requete sql qui est invalide
public void Afficher_transaction(DateTime date_debut,DateTime date_fin,BindingSource bindingSource5)
{
string sqlQuery = "select type_transaction , COUNT(type_transaction) as total from Transaction1 group by type_transaction where @date_debut<=date_transaction<= @date_fin; ";
SqlConnection sqlConnection = new SqlConnection("Server=PC-DE-OLFA\\WITSQL;Database=GestionCommande;User ID=sa;Password=olfa;Integrated Security= true;Trusted_Connection=False");
SqlCommand sqlCmd = new SqlCommand(sqlQuery, sqlConnection);
sqlCmd.Parameters.Add(new SqlParameter("@date_debut", date_debut));
sqlCmd.Parameters.Add(new SqlParameter("@date_fin", date_fin));
SqlDataAdapter dataAdapter = new SqlDataAdapter();
dataAdapter.SelectCommand = sqlCmd;
SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter);
// Populate a new data table and bind it to the BindingSource.
DataTable table = new DataTable();
table.Locale = System.Globalization.CultureInfo.InvariantCulture;
dataAdapter.Fill(table);
bindingSource5.DataSource = table;
sqlConnection.Open();
sqlCmd.ExecuteNonQuery();
sqlConnection.Close();}
et pour l'appel de cette méthode ,ça sera juste après que l'utilisateur choisit deux dates(debut et fin) et après qu'il clique sur bouton visualiser
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201549 23 mai 2011 à 12:03
Salut
"@date_debut <= date_transaction <= @date_fin"
S'il ne détectait pas la validité de la syntaxe, il commencerait par traiter @date_debut <= date_transaction. Imaginons que ce soit vrai, il devrait ensuite traiter TRUE <= @date_fin, ce qui est absurde.
Pour résumer, tu ne peux pas faire (quel que soit le langage) a < b < c. Tu es généralement obligé de passer par 2 conditions : a < b et b < c
En SQL, tu as deux possibilités :
@date_debut <= date_transaction AND date_transaction <= @date_fin
ou
date_transaction BETWEEN @date_debut AND @date_fin
Dans le BETWEEN, les bornes sont incluses. S'il fallait que date_transaction soit strictement supérieure à @date_debut et/ou strictement inférieure à @date_fin, seule la première possibilité fonctionnerait.
Krimog : while (!(succeed = try())) ; - Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -