Requete date [Résolu]

Messages postés
61
Date d'inscription
mercredi 30 mars 2011
Statut
Membre
Dernière intervention
25 septembre 2011
- - Dernière réponse : Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
- 21 mars 2011 à 14:06
Bonjour a vous tous !!
J'ai déja posé cette question , mais j'ai pas eu de réponse , que peut que j'ai mal posé ma question , Bon voila mon probléme ,dans ma form j'ai un combo box qui cotient que les année (2009 , 2010 , 2011) ce que je veux , c'est quand j'appui sur un année , exemple 2010 , mon champ date qui se trouve dans la base de donnée me filtre que les date de 2010 , j'ai effectuer une requte mais il y a un erreur voila mon code:
    
   if (comboBox1.SelectedIndex == (0)
{
  x.Tables.Clear();
            SqlConnection con = new SqlConnection(".....");
            SqlDataAdapter adap = new SqlDataAdapter();
            adap.SelectCommand = new SqlCommand("select  *from Date  where date_vérification_étalonnage='" +("dd/mm/2010") + "'", Program.con);

            adap.Fill(x);
            dataGridView1.DataSource = x.Tables[0];
}

Merci pour votre aide !







"Qui prend toujours et jamais ne donne, à la fin
chacun l'abandonne."
zzzzzzzzzzzzzzzzzzz............
Afficher la suite 

9 réponses

Meilleure réponse
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57
3
Merci
on reprend les même questions, dans d'autres languages..

je passe le chapitre sur les requetes parametrees, l'injection SQL, etc.

une date se formatte ainsi :

#YYYY-MM-DD#

ainsi, aucun souci...

dans ton cas, donc :

SELECT * FROM `Date` WHERE `date_vérification_étalonnage`=#2010-03-21#"

Si, bien sur, ton champ est bien de type Date ...

cela ne répond pas a ta question, mais peut etre a la prochaine, gagnons du temps.

tu ne peux ainsi intégrer dd ou mm dans une requete.

Faire, soit :

SELECT * FROM `Date` WHERE `date_vérification_étalonnage` BETWEEN #2010-01-01# AND #2010-12-31#

soit :

SELECT * FROM `Date` WHERE Year(`date_vérification_étalonnage`)=2010

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 196 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Renfield
Messages postés
1863
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
28
0
Merci
Salut

Déjà, première chose, les accents dans les variables ou, en l'occurrence, dans les noms des champs SQL, c'est mal. C'est autorisé dans certains langages, mais très fortement déconseillé dans tous.

Ensuite, si tu ne veux pas te casser la tête sur la façon d'écrire certains types de variables en SQL, utilise les SqlParameters. (Ça te permettra aussi d'utiliser des procédures stockées)

SqlCommand c = new SqlCommand();
c.CommandText "SELECT * FROM Date WHERE 'date_vérification_étalonnage' @DateVerif";
// Il ne faut rien mettre autour de @DateVerif (ni ', ni #). 
// Ce sera ajouté automatiquement selon le type de variable que tu donnes.
DateTime dateVerif = DateTime.Now; // Bien sûr, tu mets la valeur que tu veux
c.Parameters.Add(new SqlParameter("@DateVerif", dateVerif));
adap.SelectCommand = c;


Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
Commenter la réponse de krimog
Messages postés
61
Date d'inscription
mercredi 30 mars 2011
Statut
Membre
Dernière intervention
25 septembre 2011
0
Merci
Merci , merciiii pour vos réponse , j'ai pas encore mais c'est logiqueee.....enfait , je vais opter pour les requete paramétré , j'ai jamais essayé caa , c'est le bon moment...enfait pour la valeur que je veux ici (DateTime dateVerif = DateTime.Now;)quelle format je peux faire cette année là ? ou entre 2 date ? Merci beaucouupp






"Qui prend toujours et jamais ne donne, à la fin
chacun l'abandonne."
zzzzzzzzzzzzzzzzzzz............
Commenter la réponse de abbeille
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
22
0
Merci
Salut,

Pour selectionner les enregistrements de 2010 utilises la fonction sql Year

c.CommandText "SELECT * FROM Date WHERE Year(date_vérification_étalonnage) @Annee";
c.Parameters.Add(new SqlParameter("@Annee", 2010));
Commenter la réponse de nhervagault
Messages postés
61
Date d'inscription
mercredi 30 mars 2011
Statut
Membre
Dernière intervention
25 septembre 2011
0
Merci
j'ai essayé ca , t'a dis qu'il ne faut rien faire a coté de daterif voila le code un probléme de conenction

SqlConnection con = new SqlConnection("Data Source=BENDDANE-PC\\SQLEXPRESS;Initial Catalogue........");
SqlDataAdapter adap = new SqlDataAdapter();
SqlCommand c = new SqlCommand();
c.CommandText "SELECT * FROM Date WHERE 'date_vérification_étalonnage' @DateVerif",con);
// Il ne faut rien mettre autour de @DateVerif (ni ', ni #).
// Ce sera ajouté automatiquement selon le type de variable que tu donnes.
// DateTime dateVerif = (25/09/2010); // Bien sûr, tu mets la valeur que tu veux
c.Parameters.Add(new SqlParameter("@DateVerif", 2010));
adap.SelectCommand = c;





"Qui prend toujours et jamais ne donne, à la fin
chacun l'abandonne."
zzzzzzzzzzzzzzzzzzz............
Commenter la réponse de abbeille
Messages postés
61
Date d'inscription
mercredi 30 mars 2011
Statut
Membre
Dernière intervention
25 septembre 2011
0
Merci
Merci , merciiiiiiiiiii a vous , vous m'avez étais d'une grande utilitéééé....encore merci
voila le code , pour celui qui l'intérrésse
 x.Tables.Clear();
            // x.Tables[0].Clear();
            //   StyleDtg();
            SqlConnection con = new SqlConnection("............");
            SqlDataAdapter adap = new SqlDataAdapter();
            adap.SelectCommand = new SqlCommand("select  *from Date  where Year (date_vérification_étalonnage)='" + 2012 + "'", Program.con);

            adap.Fill(x);
            dataGridView1.DataSource = x.Tables[0];






"Qui prend toujours et jamais ne donne, à la fin
chacun l'abandonne."
zzzzzzzzzzzzzzzzzzz............
Commenter la réponse de abbeille
Messages postés
1863
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
28
0
Merci
La fonction Year(), en SQL, renvoie un entier. Il n'est donc pas nécessaire de mettre ' autour de 2010 (c'est même mieux de ne pas le mettre).

Et en fait, pardon, je n'avais pas totalement lu ta question, et donc n'avais pas compris que tu voulais toutes les dates de 2010.

Cependant, je te conseille là encore de passer par des SqlParameter, beaucoup plus propres, et qui évitent les risques d'injection SQL.
Ce qu'il devait manquer dans ton code, c'est c.Connection = con;

Donc résumé :
SqlConnection con = new SqlConnection("...");
SqlDataAdapter adap = new SqlDataAdapter();
SqlCommand c new SqlCommand("SELECT * FROM Date WHERE Year(date_vérification_étalonnage) @Annee");
c.Parameters.Add(new SqlParameter("@Annee", 2010));
c.Connection = con;
adap.SelectCommand = c;


Et si tu voulais utiliser between :
SqlConnection con = new SqlConnection("...");
SqlDataAdapter adap = new SqlDataAdapter();
SqlCommand c = new SqlCommand("SELECT * FROM Date WHERE date_vérification_étalonnage BETWEEN @DateDebut AND @DateFin);
c.Parameters.Add(new SqlParameter("@DateDebut", new DateTime(2010, 1, 1)));
c.Parameters.Add(new SqlParameter("@DateFin", new DateTime(2011, 1, 1)));
c.Connection = con;
adap.SelectCommand = c;


Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
Commenter la réponse de krimog
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57
0
Merci
ne mets pas des quotes partout :

year() = '2012'

ici, ton année, c'est du numérique...
voir mon permier message, quoi ^^

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Commenter la réponse de Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57
0
Merci
ne mets pas des quotes partout...

= '2012'

2012 est une valeur numérique, donc pas de quotes !

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Commenter la réponse de Renfield