Problème de date SQL server/VB [Résolu/Fermé]

Janus006 9 Messages postés jeudi 17 avril 2008Date d'inscription 12 mai 2010 Dernière intervention - 18 avril 2010 à 14:46 - Dernière réponse : PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention
- 18 avril 2010 à 20:34
Salutations,
J'utilise VB6 avec sql server 2000 (c'est ancien pour cause de licenses). Voici brièvement mon problème: j'écris dans à partir de VB, une date dans une colonne de type datetime dans sql server, puis plutard, dans vb, j'utilise:
recordset.open "select * from TableX where date = '" & dat & "' ", Connection, adOpenDynamic, adLockOptimistic
où dat est une variable vb de type date dans laquelle je mets un combo3.text.

je reçois un message d'erreur relatif à ces ligne, provenant de sql server, ou il me dis que la lecture de la variable, a été interprété dans sql server comme au dela des limites des dates (out-of-range date).

Mon système régional est français, mon sql server est anglais.

Prière de bien vouloir m'aider, d'urgence.

Je vous remercie beaucoup d'avance.

Cordialement.
Afficher la suite 

11 réponses

PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 18 avril 2010 à 15:07
+3
Utile
salut,

oui c'est toujours urgent....

mais 3 secondes de recherche pour savoir qu'une date s'encadre de #, et que la fonction FORMAT est à utiliser

NB : un champ de type DATE nommé DATE?... MOT RéSERVé, c'est une fonction SQL

++
[hr]
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de PCPT
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 18 avril 2010 à 16:14
+3
Utile
J'ai encadré avec # bien avant , je ne suis pas si illettré

justement, je parle de la requête que tu as copié, et non de ton code avant (puisque non fourni)

google : syntaxe sql date diese
première réponse : http://faq.vb.free.fr/index.php?question=170

sqlQuery "SELECT * FROM Table1 WHERE TheDate #12/23/2006#"


pourtant le message d'erreur est clair :
syntax error near '16/04/2010'

erreur de syntaxe près de la date ; oui c'est entre ## et non entre ''

si il y a plusieurs sortes de messages d'erreurs c'est aussi pour nous faciliter le débogage, faut juste lire
(et un peu chercher)

++
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de PCPT
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 18 avril 2010 à 17:34
+3
Utile
pas #' ddd '# non plus, que des #

et DATE est AUSSI un mot clé SQL (type date par exemple?...)
CREATE TABLE Table1 ( Column1 date );
http://msdn.microsoft.com/fr-fr/library/bb630352.aspx

mais si tu dis que non alors tu dois avoir raison, puisque c'est déjà mon 3e message pour dire la même chose et tu n'as toujours pas essayé

et pour le FORMAT(....) tu en es où?

tu ne lis toujours pas donc j'arrête là, désolé!
bonne continuation
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de PCPT
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 18 avril 2010 à 18:32
+3
Utile
et pour Date, le type de donnée dans Sql server est 'datetime'

je ne dis pas que tu utilises DATE mais que c'est un MOT CLé, y'a pas à débattre !!!
après c'est ton choix


FORMAT => F1 ou MSDN ou GOOGLE

la casse, NON!! tu n'auras jamais un champ Date1 et un autre dAte1 dans la même table!


bref si tu as remplacé DATE par DateF c'est très bien. pour info les crochets ne sont nécessaires que si le champ ou la table contiennent des espaces dans leur nom


et pour les DIESES, ENCORE ET ENCORE, regarde le message :
pourquoi il s'arrête au # ? parce que tu as mis des espaces....


faut pas dire "je ne te remercierai jamais assez", fais le juste en lisant réellement les réponses qu'on peut te donner, c'est pas en nous faisant perdre notre temps à tous qu'on se sentira utile.....
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de PCPT
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 18 avril 2010 à 19:36
+3
Utile
j'ai utilisé cast, format, fais ci fais çà.....

oui et tu ne montres rien!!

le peu que tu as montré provoquait des erreurs, et la dernière dit que tu as fait une sorte de SELECT # FROM ....

donc niveau SQL tu n'as rien écouté ni lu ni visité (lien MSDN avec explication type DATE)

niveau VB, tu as des variables qui sont AUSSI DES MOT CLES
recordset.open.... ?
tu as renommé? ou tu as vraiment fait dim recordset as recordset?...

comment veux-tu qu'on corrige un code que tu n'expliques pas, et pire encore si le peu que tu fournis n'est même pas le code réel!!


allez on va vraiment arrêter, c'est un dialogue de sourd depuis le début, voici le code complet qui sera bon si tes champs sont bons et que la connexion est OK. te reste à mettre les bons noms de variables

recordset.open "SELECT * FROM [TableX] WHERE [DateF] = #" & format$(dat, "YYYY-MM-DD") & "#;", Connection, adOpenDynamic, adLockOptimistic, -1



bonne soirée
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de PCPT
Janus006 9 Messages postés jeudi 17 avril 2008Date d'inscription 12 mai 2010 Dernière intervention - 18 avril 2010 à 20:05
+3
Utile
je pense que les choses s'arrangeront quand tu seras assez modeste de ne pas traiter tout les débutants comme des cons, je suis peut être débutant et ignorant mais pas con.

j'ai bien utilisé select * et non select # se référer à mon tout premier message, je n'ai aucune raison de mettre # à la place d'* ce serait trop con.

pour le recordset, n'importe quel con comprendrait que recordset est un nom reservé. j'ai mis recordset.open juste à titre explicatif pour comprendre que j'utilise un recordset, le vrai nom que j'ai donné est rsq.

mais tout va bien j'ai réussi à résoudre le blème
je suis parti me battre juste avant ton dernier message et sans le lire j'ai trouvé le noeud du problème : SQL m'affiche une date de type dd/mm/yyyy quand je lui demande de me retourner toute lse lignes. mais le problèmes c'est que le type date pour lui est yyyy-mm-dd HH:MM:SSS.xxx chose que je ne voyais pas avant et que je ne comprenais pas quand je lisais les publication sur sql dans msdn.


comment sql me comprends lorsque j'écris à travers un addnew dans une autre form, sur la même colonne datef de la même table un text2.text de dataformat Date et qui est sous forme 16/04/2010 ??

j'ai écris en fait :

Dim dat As String
dat = Format(DateValue(Combo3.Text), "yyyy-mm-dd")
MsgBox " " & dat & " "

RSq.Open "select * from Commandes where [DateF]='" & dat & "' AND ClientF='" & Trim(Combo2.Text) & "' ", CON, adOpenDynamic, adLockOptimistic

et ça marche.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Janus006
Janus006 9 Messages postés jeudi 17 avril 2008Date d'inscription 12 mai 2010 Dernière intervention - 18 avril 2010 à 15:50
0
Utile
Merci,
J'ai encadré avec # bien avant , je ne suis pas si illettré que ça mais là on me dis, syntax error near '16/04/2010' (la date dans la variable dat) un par contre pour format, j'ai essayé mais je ne sais pas vraiment à quel niveau je dois l'utiliser, avant la requête sql ou dans la requête sql.


Merci pour la réponse. J'apprécie sincérement l'effort.
Commenter la réponse de Janus006
Janus006 9 Messages postés jeudi 17 avril 2008Date d'inscription 12 mai 2010 Dernière intervention - 18 avril 2010 à 17:01
0
Utile
lorsque j'ai dis bien avant, je voulais dans le temps , c'est à dire bien avant que je n'adresse ce message.
j'avais fais avant:
rs.open " select * from tableX where [Date]= # '" & dat & "' # ",connection, adopendynamic, adlockoptimistic
et c'est là qu'on me dis invalid syntax near '16/04/2010'.
et pour Date, c'est vrai que c'est réservé dans VB mais pas sql, d'autant plus que sql reconnait la casse dans les nom de champ.

merci pour ton intérêt à la chose, je suis perdu dans ces messages d'erreur, j'ai cherché dans msdn, en vain...

j'ai vraiment besoin d'aide sur celle là, j'ai jamais tardé autant sur un bug en vb6.

merci encore.
Commenter la réponse de Janus006
Janus006 9 Messages postés jeudi 17 avril 2008Date d'inscription 12 mai 2010 Dernière intervention - 18 avril 2010 à 18:09
0
Utile
mais je t'ai dis que pour format, je ne sais pas vraiment quand l'utiliser si c'est dans la requête SQL ou avant la requête sur la variable dat.
et pour Date, le type de donnée dans Sql server est 'datetime'.

et pour ce qui concerne que ce soit le fait que c'est réservé dans sql... j'ai une autre table que celle ci où j'ai mis date aussi, et dans laquelle j'écris depuis une autre forme sans problème.
et juste après ton premier message j'ai utilisé [DateF] comme non de table et recommencé à zero.

par contre pour le truc des # j'ai essayé :
# " & dat & " # on me dit dans ce cas, incorrect syntax near #
#'" & dat & "'# on me dit dans ce cas incorrect syntax near '16/04/2010' (ça me montre qu'il réussi à lire la variable)

je te jure que je lis tout tes messages et execute toutes tes recommandations

le problème est sérieusement dur. je ne te remercierai jamais assez pour ton aide je suis sincère.
Commenter la réponse de Janus006
Janus006 9 Messages postés jeudi 17 avril 2008Date d'inscription 12 mai 2010 Dernière intervention - 18 avril 2010 à 19:23
0
Utile
j'ai utilisé format, et mis la forme de date comme "dd/mm/yyyy" qui est normalement acceptée par sql server (d'aileurs je remplis sql serveur depuis vb sans problème.
j'ai mis datef au lieu de date.
j'ai enlevé tout les espaces qui risquent de causer un problème et là au lieu de l'erreur d'avant on me dit:
invalid column name '#'
encore une fois j'ai essayé 1000 façon avec espace et sans espace d'utiliser #.
j'ai essayé des quatre type de date. rien. j'ai fais des recherche j'ai trouvé cast() de sql que j'ai utilisé comme suit:

cast( "& dat &" AS datetime[8])


merci encore et toujours
Commenter la réponse de Janus006
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 18 avril 2010 à 20:34
0
Utile
je ne t'ai pas traité, te la joues pas caliméro.... tu m'as déjà bien usé en MP par ton manque de lecture et ta demande de tout cuit il y a quelques temps, voilà pourquoi ce discours était un peu sec, mais tout ceci ne change rien à ce que j'ai dit :

*tu n'as rien lu
*tu ne nous as donné aucune information pour nous aider à comprendre ton problème POUR T'AIDER
*tu n'as donné aucun code étant réellement celui que tu utilisais
*tu parles de format date alors qu'en plus c'était une STRING nommée DAT, ce qui change encore la donne
*et même encore, PARCE QUE TU N'AS NI LU MON LIEN NI FAIT F1, tu parles de TYPE au lieu de FORMAT, une date n'est pas en YYYY-MM-DD ni DD/MM/YYYY, avec ou sans heure, c'est un format sur 64 bits! ce que tu compares est ce que tu vois, donc déjà interprété par ton système
c'est bien pour çà qu"on utilise FORMAT sur une DATE et non une STRING


pas mal la mentalité...
"je ne te remercierai jamais assez" quand tu as la flemme de chercher, et çà fini par des insultes quand tu mets une rustine sur tes tonnes d'erreurs après avoir profité de la réponse toute cuite

jolie mentalité, t'iras loin
Commenter la réponse de PCPT

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.