Requête SQL Server

lebasketeur Messages postés 36 Date d'inscription vendredi 17 avril 2009 Statut Membre Dernière intervention 13 avril 2010 - 6 juin 2008 à 16:59
lebasketeur Messages postés 36 Date d'inscription vendredi 17 avril 2009 Statut Membre Dernière intervention 13 avril 2010 - 9 juin 2008 à 11:20
Salut, mon probleme c'est dans une requête SQL. Je travaille mon application VB 6.0 avec SQL Server.
Voila c'est la requête :

A.DtArrivee Between #" & Format$(DxtSrhDtFin.Value, "MM\/DD\/YYYY") & "# And #" & Format$(DxtSrhDtDebut.Value, "MM\/DD\/YYYY") & "# Order By DtArrivee

N.B : Sous Access la requête marche très bien, mais non pas sous SQL Server.

Merci d'avance.

7 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
6 juin 2008 à 18:52
Salut
VB6 et tu postes ta question en .Net
Faut déjà être un peu logique
Catégorie modifiée

Ta requète est bien écrite, tu as bien fait attention aux syntaxes, ça devient rare !
La seule chose que je vois :
- mais qui ne devrait pas te pénaliser, c'est le "A." qui manquerait après le Order By
- dans ta syntaxe, tu spécifies la date de Fin avant la date de Début.
  Peut-être qu'un des moteur est plus intelligent que l'autre ...

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)
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
6 juin 2008 à 19:27
Sous SQLServer essaye en supprimant les # encadrant les dates.

S'ils sont obligatoire sous Access, perso, j'ai jamais réussi à faire marcher une requette ainsi sous SQLServer

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 36
6 juin 2008 à 21:14
Salut

La méthode pour les dates dans SQL server qui fonctionne toujours est de passer par les parametres des commandes.
Il n'y a pas besoin de gerer les ' pour les chaines de caractéres les #pour les dates, les conversions pour les dates,
c'est ADO qui gere tout.

Et ton format est tres bizarre
"MM\/DD\/YYYY" --> je mettrai MM/DD/YYYY ou DD/MM/YYYY
Sous access il y a un probleme entre les 2 formats il fonctionne en anglais avec vb6 et en francais
par exemple 13/12/2005  (13 decembre 2005) --> francais poour access  et  5/12/2005  (12 mai 2005 pour access)

C'est un bug d'access mais en sqlserver, je ne pense pas qu'il existe.
lebasketeur Messages postés 36 Date d'inscription vendredi 17 avril 2009 Statut Membre Dernière intervention 13 avril 2010
6 juin 2008 à 22:26
Merci Jack pour la modification de cathégorie, j'ai fait la remarque mais c'etait trop tard.
Pour ma requete je vais essayé de supprimer les # et suivre les intructions de Casy et Nhervagult.

Merci ...

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
7 juin 2008 à 18:44
@ nhervagault
Non, même si un langage peut s'occuper de reconnaitre les types, il vaut mieux toujours être le plus précis possible afin d'éviter que le langage ne fasse d'erreur d'interprétation.

@ lebasketeur
Et pense à tester l'inversion les dates début-fin avant de toucher à ta syntaxe.

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)
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 36
8 juin 2008 à 00:23
Justement l'utilisatation permet d'éviter les problemes d'interprétation des parametres
de plus il y a une augmentation des performance car la base de données sait optimiser des requetes parametres (du moins dans les bases de données de types serveur et peut etre celle de type burautique comme access mais la c'est pas sur)
lebasketeur Messages postés 36 Date d'inscription vendredi 17 avril 2009 Statut Membre Dernière intervention 13 avril 2010
9 juin 2008 à 11:20
ReSalut,

Après plusieurs tentatives .... supprimer les # inverser les dates debut-fin, travailler avec Convert ..... Toujours sans résultats.
je viens d'essayer :

A.DtArrivee Between " & Format(DxtSrhDtFin.Value, "yyyy-mm-dd h:nn:ss") & " And " & Format(DxtSrhDtDebut.Value, "yyyy-mm-dd h:nn:ss") & " Order By A.DtArrivee

Mais là il me donne l'erreur suivante :
Erreur d'exécution '-2147217900 80040e14 :
Ligne 1 : syntaxe incorrecte vers 10
Rejoignez-nous