J'ai un problème avec l'instruction access sql SELECT. le problème est que lorsque le backend est ACCESS-2007 cela fonctionne; Cependant, lorsque le backend est sql-server-2008, il ne retourne rien. voici la déclaration:l'instruction sql d'accès ne renvoie rien!
SELECT IIf([Lab Occurrence Form].[1 0 Preanalytical (Before Testing)] Like '*1.11*Other*','1.11 Other',[Lab Occurrence Form].[1 0 Preanalytical (Before Testing)]) AS [Occurrence Code], Count([Lab Occurrence Form].[1 0 Preanalytical (Before Testing)]) AS [Count]
FROM [Lab Occurrence Form]
WHERE ((([Lab Occurrence Form].[Occurrence Date]) Between Forms!Meeting_Reasons_Frequency!Text4 And Forms!Meeting_Reasons_Frequency!Text2)) And [Lab Occurrence Form].[1 0 Preanalytical (Before Testing)] Like '*1.*'
GROUP BY IIf([Lab Occurrence Form].[1 0 Preanalytical (Before Testing)] Like '*1.11*Other*','1.11 Other',[Lab Occurrence Form].[1 0 Preanalytical (Before Testing)])
HAVING ((Count([Lab Occurrence Form].[1 0 Preanalytical (Before Testing)]))<>0)
ORDER BY IIf([Lab Occurrence Form].[1 0 Preanalytical (Before Testing)] Like '*1.11*Other*','1.11 Other',[Lab Occurrence Form].[1 0 Preanalytical (Before Testing)])
s'il vous plaît noter que c'est ce qui ne fonctionne pas: Forms!Meeting_Reasons_Frequency!Text4
et ce Forms!Meeting_Reasons_Frequency!Text2
- quand je remplace les valeurs constantes ils travaillent; Cependant, le problème est qu'il ne lit pas correctement ce qui est dans la zone de texte pour une raison quelconque.
encore: cette requête fonctionne FINE avec l'accès en tant que backend, cependant quand le backend bascule sur sql server cela ne fonctionne pas! la raison est à nouveau à cause de la chose forms!text
. Quelqu'un sait-il pourquoi?
mise à jour grâce à la suggestion de bob j'ai couru le profil sur sql-server et j'ai trouvé quelque chose de drôle. il travaille en effet correctement, mais il retourne la date comme celui-ci:
@P1 datetime,@P2 datetime','2010-04-30 00:00:00','2010-04-01 00:00:00'
IIF est un accès spécifique, pas SQL/TSQL –
poneys @omg: cette requête est traduite par un accès en sql/tsql. encore une fois, cela fonctionne bien si je change ces valeurs en constantes au lieu de les obtenir à partir de la zone de texte –
Pouvez-vous capturer l'instruction SQL qui est exécutée sur le serveur SQL. Vous devriez être en mesure d'utiliser SQL Server Profiler. L'instruction Access doit être convertie en version SQL Server. – bobs