Chaîne SQL en VBA dans Excel 2010 avec des Dates
J'ai eu un coup d'oeil autour de lui, mais ne peut pas trouver le problème avec cette Instruction SQL:
strSQL = "SELECT Directory.DisplayName, Department.DisplayName, Call.CallDate, Call.Extension, Call.Duration, Call.CallType, Call.SubType FROM (((Department INNER JOIN Directory ON Department.DepartmentID = Directory.DepartmentID) INNER JOIN Extension ON (Department.DepartmentID = Extension.DepartmentID) AND (Directory.ExtensionID = Extension.ExtensionID)) INNER JOIN Site ON Extension.SiteCode = Site.SiteCode) INNER JOIN Call ON Directory.DirectoryID = Call.DirectoryID WHERE (Call.CallDate)>=27/11/2012"
Indépendamment de ce que je change la OÙ il renvoie toujours à chaque valeur unique dans la base de données (au moins je suppose qu'il n'depuis excel complètement se bloque lorsque je tente ce) cette instruction SQL fonctionne parfaitement bien dans l'Accès (si les dates ont # # autour d'eux). Aucune idée de comment résoudre ce problème, en train d'essayer de créer une instruction SQL qui permet à l'utilisateur d'entrée à des dates différentes, mais doivent obtenir au cours de la présente aléatoire obstacle de premier.
MODIFIER: Le champ de date dans la Base de données SQL est un JJ/MM/AA HH:MM:SS, et cette requête est effectuée en VBA - EXCEL 2010.
Aussi, pour éviter la confusion ont enlevé le TOP 10 de la déclaration, qui a été d'arrêter de excel à partir de la récupération de chaque ligne dans la base de données.
Référence actuelle j'ai activé est: MicrosoftX Objets de Données De 2,8 Bibliothèque
Base de données MSSQL, à l'aide de la chaîne de connexion:
Provider=SQLOLEDB;Server=#######;Database=#######;ID Utilisateur=########;Mot de passe=########;
Vous devez vous connecter pour publier un commentaire.
Veuillez vérifier que le champ de l'Appel.CallDate est de type DATETIME ou DATE
Si vous êtes en effet l'exécution de ce rapport à SQL Server, essayez cette syntaxe pour commencer:
Le format de date que vous voyez est tout simplement quel que soit le format de votre outil client décide de le montrer dans. Les Dates ne sont pas stockées dans n'importe quel format, ils sont effectivement stockées comme une durée puisque x.
Par défaut de SQL Utilise le format AAAA-MM-JJ si vous souhaitez utiliser un littéral de date.
Mais vous êtes beaucoup mieux la définition d'un paramètre de type date dans votre code et de garder votre date d'un type de données 'date' aussi longtemps que possible. Cela peut inclure ne leur permet d'entrer la date à l'aide d'un calendrier de contrôle pour arrêter les ambiguïtés.
'2012-11-27'
, UtilisezCONVERT(DATETIME,'20121127',112)
. Cela fournit un format explicite code pour indiquer exactement ce que vous êtes de passage.Entourent la variable de date avec
#
.MODIFIER: Merci de prendre date chaîne de caractères non ambigus, tels que le 27-Nov-2012
Si vous utilisez ado, vous devriez regarder
Paramaters
au lieu d'utiliser de requête dynamique.EDIT2: Grâce à @ElectricLlama pour souligner que c'est SQL Server, pas de MS-Access