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
51
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
51
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