Je suis sous VB 2010 et SQL SERVER 2008 (en express edition)
Je cherche a faire une requete SQL pour compter le nombre d'enregistrements d'une table pour un mois specifique (que je précise selon une variable).
Le tri est a faire dans un champ de type datetime (champDate)
dans le genre "SELECT COUNT(*) FROM maTable WHERE MONTH(champDate) = 3"
J'aimerais utiliser cette requete (en executescalar) pour l'appliquer à mon objet commande et recuperer le resultat.
Malheuresement ma syntaxe ne semble pas correcte je dois mal utiliser la fonction MONTH...
Je débute sous sql et j'ai beau torturer Google depuis un moment je trouve pas d'exemple s'appliquant a mon probleme.
si on avait une erreur concrète (avec message complet et code) ce serait plus simple. Déjà si on pouvait savoir s'il l'erreur venait de SQL Server (requête erronée) ou de VB (lancement de la requête erroné) on en saurait bien plus.
Pour la fonction MONTH, un truc tout bête : champDate est-il bien de type date ? Car si c'est un VARCHAR il y a des chances pour que la valeur ne soit pas au bon format accepté par cette fonction.
Salut,
je confirme ce que jopop a dit,il faut savoir si l'erreur provient de la requête SQL ou du VB
Concernant la syntaxe que tu as mise, essaie celle-ci, je l'ai testé et elle est correcte:
"SELECT COUNT(*) FROM maTable WHERE MONTH(champDate) like '3'"
si l'erreur continue toujours d'apparaître, c'est plutôt ton code VB qui n'est pas correcte
Merci pour votre aide, ca ne fonctionne pas chez mois.
Pour répondre à Jopop, oui mon champ est de type Datetime
Ma requete est placée dans une fonction comme ceci :
Public Function test(ByVal str As String)
oConnexion.Open()
myCommand = New SqlCeCommand(str, oConnexion)
Dim result = myCommand.ExecuteScalar()
oConnexion.Close()
Return result
End Function
que j'appel de cette maniére depuis ma procedure :
Dim res = test("SELECT COUNT(*) FROM maTable WHERE MONTH(champDate) LIKE '3'")
Ca m'étonne que ca vienne du VB parce qu'en modifiant la requete par
Dim res = test("SELECT COUNT(*) FROM maTable WHERE champDate > '01/03/2012'")
par exemple je récupére bien le nombre d'enregistrements dont la date est > à 01/03/2012
Le message d'erreur me dit ceci :
La fonction n'est pas reconnue par SQL Server Compact Edition. [ Name of function = MONTH,Data type (if known) = ]