Requete avec des dates

gargourifahmi Messages postés 31 Date d'inscription dimanche 23 juillet 2006 Statut Membre Dernière intervention 3 décembre 2008 - 22 nov. 2006 à 00:42
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 26 nov. 2006 à 02:46
Salut,
J'ai besoin d'une requete sql qui doit comparer la date de naissance des clients d'une table avec la date actuelle. cette version n'est pas acceptée en vb.net2003:
sql = "select * from Customers where date de naissance <= CONVERT(DATETIME,'" & current_date & "',103)"""

Est ce qq'un peut m'aider SVP

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
22 nov. 2006 à 03:52
Salut
Déjà dit maintes et maintes fois :
Si le champ "date de naissance" compose réellement des espaces, il faut encadrer le nom du champ avec des crochets [ et ]
Si le champ est, dans la définition de la DB, un champ de type 'date générale', il faut faire les tests avec des # comme encadrement.
Ce qui donnerait :
   sql = "select * from Customers " & _
         " where [date de naissance] <= '#' + CONVERT(DATETIME, current_date, 103) + '#'"

Mais il faudra vérifier à quel monde appartient la variable 'current_date' :
Appartient-elle à ton programme VB ? ou à SQL ?
Si c'est une variable VB, il faudra revoir la syntaxe, du genre :
         " where [date de naissance] <= '#' + CONVERT(DATETIME, " & current_date & ", 103) + '#'"

Astuce si tu as à faire avec des champs de type texte :
Il faut bien dissocier les séparateurs de VB avec ceux de SQL.
Puisqu'il y a confusion possible entre les " de VB et ceux de SQL, SQL autorise d'utiliser les symboles ' comme encadrement des chaines. De cette manière, la syntaxe VB est allégée, plus besoin de doubler les ".
Exemple :   sql "select * from maTable Where Nom 'toto la riflette'"

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0
gargourifahmi Messages postés 31 Date d'inscription dimanche 23 juillet 2006 Statut Membre Dernière intervention 3 décembre 2008
25 nov. 2006 à 22:36
salut Jack,
Si vous etes la ou personne qui sait une solution a ce pb de requetes date en vb.net
voila j'ai essayé cette requete mais ça ne marche pas encore

sql "select Customers.* from Customers where [date de naissance] '#' + CONVERT(DATETIME, '" & TextBox1.Text & "', 103) + '#'"

Merci d'avance.
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
26 nov. 2006 à 02:46
Salut
NB : je demande à ce qu'on ne m'envoie pas de message privé. Le fait de réponse à ce post suffit à m'avertir.
La question est : Comment as-tu déclaré ton champ [date de naissance] dans ta DB ?
Si tu utilises la conversion DATETIME sous SQL, il faut impérativement que ton champ soit déclaré en type date

La conversion SQL n° 103 = "dd/mm/yyyy"
A mon avis, il faut demander cette conversion à VB, ce sera plus simple :
Dim maDate As String
maDate = Format(TextBox1.Text, "dd/mm/yyyy")

Ensuite, dans ta syntaxe SQL, si ton champ est déclaré en type :
- Date : where [date de naissance] = #" & maDate & "#"
- Texte : where [date de naissance] = '" & maDate & "'"

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accroit quand on
0
Rejoignez-nous