cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 27 févr. 2008 à 16:50
Salut
Rappel des règles syntaxiques de base VB6 et SQL :
(ces règles sont écrites 10 fois par semaine dans le forum : tu aurais pu chercher un peu)
- VB6 : Dim HeureDbt, HeureFin As Date
ne signifie pas que HeureDbt sera dimensionné en Date.
Il sera dimensionné en Variant. Cela pose quelque fois des soucis, justement dans le domaine des conversions
Il faut donc répéter le type pour chaque variable.
- VB6 : Comme son nom l'indique, le format Date contient une date agrémentée de l'heure.
Si tu n'as pas besoin de la date dans ton format, mais uniquement des heures, mieux vaut les dimensionner en String et d'utiliser le format standard HH:NN:SS
Rappel : Les minutes ne s'abrègent pas avec M mais avec N (M = Mois)
- SQL :
Encadrement des contenus des champs :
Type numérique : Pas d'encadrement
Type chaine : Encadrement par '
Type Date : Encadrement par #
Le type dont je parle ici est celui du type du champ tel que défini dans la base de données, pas sous VB
Exemple :
"... Where ChampDate = #" & maDate & "#"
- SQL : Sous Access, bien quon définisse un format date à la française (jj/mm/aaaa), les données sont stockées à l'américaine (mm/jj/aaa). Le format n'opère que sur l'affichage des données sous Access
Donc, en VB6, tu récupèreras des dates à l'américaine.
Pour corriger le tir, il suffit de demander à Access de transformer le format :
Exemple :
"... Where ChampDate = DateValue('" & maDate & "')"
et dans ce cas, on revient à un encadrement de type String avec des '
Tu noteras que DateValue est à l'intérieur des ", donc dans la syntaxe SQL, pas VB.
- Général : Dans ta requète SQL, après la clause WHERE, on ne trouve que des AND
Il est donc inutile de surcharger la requète avec cet empilement de parenthèses
Conclusion : La syntaxe que tu recherches dépend donc de la manière dont tes champs de base de données sont déclarés.
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 27 févr. 2008 à 19:09
"Sous Access, bien quon définisse un format date à la française (jj/mm/aaaa), les données sont stockées à l'américaine (mm/jj/aaa)."
NON, je vais répéter pour la Xeme fois qu'un champ DATE d'Access n'est rien d'autre qu'un Double (flottant 64 bits) et n'a donc aucun autre format que: signe - exposant - mantisse.
Son mode de calcul est le standard OLE de Windows: 30/12/1899 = 0,00, à 12h c'est 0,5 etc..
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 27 févr. 2008 à 19:11
J'ai oublié de préciser que c'est exactement le standard qu'emploie le type Date de VB6 qui n'est rien d'autre lui aussi qu'un Double en interne (encapsulé dans un Variant).