Requete date

Résolu
abbeille Messages postés 61 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 25 septembre 2011 - 21 mars 2011 à 10:41
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 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............

9 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
21 mars 2011 à 10:49
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
3
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
21 mars 2011 à 12:12
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é. -
0
abbeille Messages postés 61 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 25 septembre 2011
21 mars 2011 à 12:41
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............
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
21 mars 2011 à 12:59
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));
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
abbeille Messages postés 61 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 25 septembre 2011
21 mars 2011 à 13:11
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............
0
abbeille Messages postés 61 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 25 septembre 2011
21 mars 2011 à 13:34
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............
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
21 mars 2011 à 14:05
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é. -
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
21 mars 2011 à 14:05
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
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
21 mars 2011 à 14:06
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
0
Rejoignez-nous