Requête Paramétré

Résolu
Fo0Zie Messages postés 95 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 8 juin 2009 - 8 juin 2009 à 16:02
Fo0Zie Messages postés 95 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 8 juin 2009 - 8 juin 2009 à 17:15
Bonjour à tous !
J'ai une requete paramété qui est comme ceci :
                SELECT nom FROM Historique WHERE  date BETWEEN '01/@mois/@year' AND '31/@mois/@year'
                this.maCmd.Parameters.Add("@mois", SqlDbType.Int);
                this.maCmd.Parameters[0].Value = numMois + 1;
                this.maCmd.Parameters.Add("@year", SqlDbType.Int);
                this.maCmd.Parameters[1].Value = DateTime.Now.Year;

Mais mon between ne passe pas, quelqu'un serais t'il comment faire, car ma requête est bonne.

Merci

4 réponses

krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
8 juin 2009 à 16:58
Bah dans le code que je t'ai fourni, j'utilise le constructeur de DateTime(int Year, int Month, int Day), donc pas de problème.
Pour que ça fasse exactement la même chose que ton code, il faut remplacer les SqlParameters par

this.maCmd.Parameters.Add(new SqlParameter("@debut", new DateTime(DateTime.Now.Year, numMois + 1, 1)));
this.maCmd.Parameters.Add(new SqlParameter("@fin", new DateTime(DateTime.Now.Year, numMois + 1,
DateTime.DaysInMonth(DateTime.Now.Year, numMois + 1))));

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
3
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
8 juin 2009 à 16:44
"SELECT nom FROM Historique WHERE date BETWEEN @debut AND @fin";

this.maCmd.Parameters.Add(new SqlParameter("@debut", new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1)));
this.maCmd.Parameters.Add(new SqlParameter("@fin", new DateTime(DateTime.Now.Year, DateTime.Now.Month,
DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month))));

Si je ne me trompe pas, le constructeur de SqlParameter met automatiquement le SqlDbType selon l'object que tu lui transmets.

De plus, les datetime en SQL ne s'utilisent pas (ou pas toujours ?) avec de quote. Je sais que parfois, c'est #01/01/2009#. C'est justement l'intérêt d'utiliser des requêtes paramétrées, c'est que tu n'as pas besoin de connaître la façon dont ton type de données doit être écrit en SQL.

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
0
Fo0Zie Messages postés 95 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 8 juin 2009 1
8 juin 2009 à 16:53
En faite, je veux tester ma date à partir d'une liste déroulante qui contient les mois.
Dans ma liste déroulante j'ai tous les mois de l'année, c'est pour cela que j'utilise 2 paramètres. Pour les mois et pour l'année en cours.
Les quotes c'est en testant ma requete sous SQL server.

Merci en tout cas d'avoir répondu.
0
Fo0Zie Messages postés 95 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 8 juin 2009 1
8 juin 2009 à 17:15
Ok d'accord, je vais tester ça de suite. Merci krimog pour l'aide que tu apportes sur ce forum !
0
Rejoignez-nous