OVH Cloud OVH Cloud

SQL vs DAO erreur

8 réponses
Avatar
Toto
Bonjour,

J'ai une requête qui permet de savoir s'il existe pour un jour donné et un
id donné plusieurs événement ouvert à une même date 10/3/2005 (dans
l'exemple)
la requête SQL ci-dessous fonctionne sous SQL (elle ne ramène que 1
enregistrement)
sous DAO j'ai tous les enregistrement de id (soit 5)
Ceci semble signifier que la condition sur la date est ignorée en DAO alors
qu'elle ne l'est pas en SQL.
En résumé je ne comprends pas pourquoi.

SELECT * FROM [T] WHERE id='mon_id' AND (#10/3/2005# Between dd And df);
dd=date début
df=date fin


merci de votre aide.

8 réponses

Avatar
Pierre CFI [mvp]
bonjour
en langage sql il faut travailler en format US mm/dd/yyyy
De: "Toto"
Objet: SQL vs DAO erreur
Date: mardi 13 février 2007 11:35

Bonjour,

J'ai une requête qui permet de savoir s'il existe pour un jour donné et un
id donné plusieurs événement ouvert à une même date 10/3/2005 (dans
l'exemple)
la requête SQL ci-dessous fonctionne sous SQL (elle ne ramène que 1
enregistrement)
sous DAO j'ai tous les enregistrement de id (soit 5)
Ceci semble signifier que la condition sur la date est ignorée en DAO alors
qu'elle ne l'est pas en SQL.
En résumé je ne comprends pas pourquoi.

SELECT * FROM [T] WHERE id='mon_id' AND (#10/3/2005# Between
format(dd,"mm/dd/yyyy") And format(df,"mm/dd/yyyy"));
ddÚte début
dfÚte fin


merci de votre aide.



--
Pierre
MVP Access
***************************************
Conseils MPFA: http://www.mpfa.info/
*********************************************************
"Toto" a écrit dans le message de news:
45d1946d$0$422$
Bonjour,

J'ai une requête qui permet de savoir s'il existe pour un jour donné et un
id donné plusieurs événement ouvert à une même date 10/3/2005 (dans
l'exemple)
la requête SQL ci-dessous fonctionne sous SQL (elle ne ramène que 1
enregistrement)
sous DAO j'ai tous les enregistrement de id (soit 5)
Ceci semble signifier que la condition sur la date est ignorée en DAO
alors qu'elle ne l'est pas en SQL.
En résumé je ne comprends pas pourquoi.

SELECT * FROM [T] WHERE id='mon_id' AND (#10/3/2005# Between dd And df);
ddÚte début
dfÚte fin


merci de votre aide.



Avatar
ze Titi
Hello Toto !

Mets-tu tes dates en format US pour DAO (#mm/jj/aaaa#) ?

En ce jour mémorable du mardi 13/02/2007, tu as entrepris la lourde
tâche de taper sur ton clavier :
Bonjour,

J'ai une requête qui permet de savoir s'il existe pour un jour donné et un id
donné plusieurs événement ouvert à une même date 10/3/2005 (dans l'exemple)
la requête SQL ci-dessous fonctionne sous SQL (elle ne ramène que 1
enregistrement)
sous DAO j'ai tous les enregistrement de id (soit 5)
Ceci semble signifier que la condition sur la date est ignorée en DAO alors
qu'elle ne l'est pas en SQL.
En résumé je ne comprends pas pourquoi.

SELECT * FROM [T] WHERE id='mon_id' AND (#10/3/2005# Between dd And df);
ddÚte début
dfÚte fin


merci de votre aide.


--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info

Avatar
Toto
ou bien sûr je passe en format US. D'ailleurs l'interpréteur SQL change les
dates française (tapées dans la création de reuqêtes) en date SQL US.
a priori le problème ne vient pas de là, le DAO ignore simplement le
critère.
d'ailleurs l'exemple ci-dessous concerne le 3 octobre.


Eric Loustau
Division Etudes statistiques Infocentre (du lundi au mercredi midi)
http://infocentre.ac-clermont.fr
Division Oganisation Scolaire et Contrôle de Gestion (mercredi 14h au
vendredi)
04.73.99.3384
"ze Titi" a écrit dans le message de news:

Hello Toto !

Mets-tu tes dates en format US pour DAO (#mm/jj/aaaa#) ?

En ce jour mémorable du mardi 13/02/2007, tu as entrepris la lourde tâche
de taper sur ton clavier :
Bonjour,

J'ai une requête qui permet de savoir s'il existe pour un jour donné et
un id donné plusieurs événement ouvert à une même date 10/3/2005 (dans
l'exemple)
la requête SQL ci-dessous fonctionne sous SQL (elle ne ramène que 1
enregistrement)
sous DAO j'ai tous les enregistrement de id (soit 5)
Ceci semble signifier que la condition sur la date est ignorée en DAO
alors qu'elle ne l'est pas en SQL.
En résumé je ne comprends pas pourquoi.

SELECT * FROM [T] WHERE id='mon_id' AND (#10/3/2005# Between dd And df);
ddÚte début
dfÚte fin


merci de votre aide.


--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info





Avatar
Pierre CFI [mvp]
tu as essayé mon code ??

--
Pierre
MVP Access
***************************************
Conseils MPFA: http://www.mpfa.info/
*********************************************************
"Toto" a écrit dans le message de news:
45d19a43$0$440$
ou bien sûr je passe en format US. D'ailleurs l'interpréteur SQL change
les dates française (tapées dans la création de reuqêtes) en date SQL US.
a priori le problème ne vient pas de là, le DAO ignore simplement le
critère.
d'ailleurs l'exemple ci-dessous concerne le 3 octobre.


Eric Loustau
Division Etudes statistiques Infocentre (du lundi au mercredi midi)
http://infocentre.ac-clermont.fr
Division Oganisation Scolaire et Contrôle de Gestion (mercredi 14h au
vendredi)
04.73.99.3384
"ze Titi" a écrit dans le message de
news:
Hello Toto !

Mets-tu tes dates en format US pour DAO (#mm/jj/aaaa#) ?

En ce jour mémorable du mardi 13/02/2007, tu as entrepris la lourde tâche
de taper sur ton clavier :
Bonjour,

J'ai une requête qui permet de savoir s'il existe pour un jour donné et
un id donné plusieurs événement ouvert à une même date 10/3/2005 (dans
l'exemple)
la requête SQL ci-dessous fonctionne sous SQL (elle ne ramène que 1
enregistrement)
sous DAO j'ai tous les enregistrement de id (soit 5)
Ceci semble signifier que la condition sur la date est ignorée en DAO
alors qu'elle ne l'est pas en SQL.
En résumé je ne comprends pas pourquoi.

SELECT * FROM [T] WHERE id='mon_id' AND (#10/3/2005# Between dd And df);
ddÚte début
dfÚte fin


merci de votre aide.


--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info









Avatar
ze Titi
Si tu nous mettais ton code DAO, peut-être pourrait-on t'aider...

En ce jour mémorable du mardi 13/02/2007, tu as entrepris la lourde
tâche de taper sur ton clavier :
ou bien sûr je passe en format US. D'ailleurs l'interpréteur SQL change les
dates française (tapées dans la création de reuqêtes) en date SQL US.
a priori le problème ne vient pas de là, le DAO ignore simplement le critère.
d'ailleurs l'exemple ci-dessous concerne le 3 octobre.


Eric Loustau
Division Etudes statistiques Infocentre (du lundi au mercredi midi)
http://infocentre.ac-clermont.fr
Division Oganisation Scolaire et Contrôle de Gestion (mercredi 14h au
vendredi)
04.73.99.3384
"ze Titi" a écrit dans le message de news:

Hello Toto !

Mets-tu tes dates en format US pour DAO (#mm/jj/aaaa#) ?

En ce jour mémorable du mardi 13/02/2007, tu as entrepris la lourde tâche
de taper sur ton clavier :
Bonjour,

J'ai une requête qui permet de savoir s'il existe pour un jour donné et un
id donné plusieurs événement ouvert à une même date 10/3/2005 (dans
l'exemple)
la requête SQL ci-dessous fonctionne sous SQL (elle ne ramène que 1
enregistrement)
sous DAO j'ai tous les enregistrement de id (soit 5)
Ceci semble signifier que la condition sur la date est ignorée en DAO
alors qu'elle ne l'est pas en SQL.
En résumé je ne comprends pas pourquoi.

SELECT * FROM [T] WHERE id='mon_id' AND (#10/3/2005# Between dd And df);
ddÚte début
dfÚte fin


merci de votre aide.


-- Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info





--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info



Avatar
Pierre CFI [mvp]
hum çà a du couper
SELECT * FROM [T] WHERE id='mon_id' AND (#10/3/2005# Between
format(dd,"mm/dd/yyyy") And format(df,"mm/dd/yyyy"));


--
Pierre
MVP Access
***************************************
Conseils MPFA: http://www.mpfa.info/
*********************************************************
"Toto" a écrit dans le message de news:
45d19a43$0$440$
ou bien sûr je passe en format US. D'ailleurs l'interpréteur SQL change
les dates française (tapées dans la création de reuqêtes) en date SQL US.
a priori le problème ne vient pas de là, le DAO ignore simplement le
critère.
d'ailleurs l'exemple ci-dessous concerne le 3 octobre.


Eric Loustau
Division Etudes statistiques Infocentre (du lundi au mercredi midi)
http://infocentre.ac-clermont.fr
Division Oganisation Scolaire et Contrôle de Gestion (mercredi 14h au
vendredi)
04.73.99.3384
"ze Titi" a écrit dans le message de
news:
Hello Toto !

Mets-tu tes dates en format US pour DAO (#mm/jj/aaaa#) ?

En ce jour mémorable du mardi 13/02/2007, tu as entrepris la lourde tâche
de taper sur ton clavier :
Bonjour,

J'ai une requête qui permet de savoir s'il existe pour un jour donné et
un id donné plusieurs événement ouvert à une même date 10/3/2005 (dans
l'exemple)
la requête SQL ci-dessous fonctionne sous SQL (elle ne ramène que 1
enregistrement)
sous DAO j'ai tous les enregistrement de id (soit 5)
Ceci semble signifier que la condition sur la date est ignorée en DAO
alors qu'elle ne l'est pas en SQL.
En résumé je ne comprends pas pourquoi.

SELECT * FROM [T] WHERE id='mon_id' AND (#10/3/2005# Between dd And df);
ddÚte début
dfÚte fin


merci de votre aide.


--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info









Avatar
Jessy Sempere
Bonjour

Avec ton code, ce serait plus simple...

Mais bon, normalement tu devrais avoir :

dim rst as dao.recordset
dim strRst as string
dim dtDeb as date
dim dtFin as date
dim result as string

dtdeb = format(inputbox("Entrez la date début"),"mm/dd/yyyy")
dtfin = format(inputbox("Entrez la date fin"),"mm/dd/yyyy")

strrst = "Select * From T Where id='ton_id' and DateEvenement between #" &
dtdeb & "# and #" & dtfin & "#"

set rst = currentdb.openrecordset (strrst,dbopendynaset)
with rst
if not .bof then
.movefirst
result = .fields("ChampSouhaité)
...

PS : Par contre, vu que tu veux une date bien précise, le between ne paraît
pas utilise, un simple ChampDate =#dateSouhaitée# devrait suffir

@+
Jessy Sempere
------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l''''efficacité de tous :
http://www.mpfa.info/
------------------------------------



Bonjour,

J'ai une requête qui permet de savoir s'il existe pour un jour donné et un
id donné plusieurs événement ouvert à une même date 10/3/2005 (dans
l'exemple)
la requête SQL ci-dessous fonctionne sous SQL (elle ne ramène que 1
enregistrement)
sous DAO j'ai tous les enregistrement de id (soit 5)
Ceci semble signifier que la condition sur la date est ignorée en DAO alors
qu'elle ne l'est pas en SQL.
En résumé je ne comprends pas pourquoi.

SELECT * FROM [T] WHERE id='mon_id' AND (#10/3/2005# Between dd And df);
ddÚte début
dfÚte fin


merci de votre aide.





Avatar
Toto
méa culpa,

En fait le problème venait de la proprités recordcount qui retournait 5
enregistrements ce qui était la valeur du précedent recordcount.
j'ai du faire une movenext puis movefirst pour que la valeur soit à jour.
Désolé.



--
"Toto" a écrit dans le message de news:
45d19a43$0$440$
ou bien sûr je passe en format US. D'ailleurs l'interpréteur SQL change
les dates française (tapées dans la création de reuqêtes) en date SQL US.
a priori le problème ne vient pas de là, le DAO ignore simplement le
critère.
d'ailleurs l'exemple ci-dessous concerne le 3 octobre.


Eric Loustau
Division Etudes statistiques Infocentre (du lundi au mercredi midi)
http://infocentre.ac-clermont.fr
Division Oganisation Scolaire et Contrôle de Gestion (mercredi 14h au
vendredi)
04.73.99.3384
"ze Titi" a écrit dans le message de
news:
Hello Toto !

Mets-tu tes dates en format US pour DAO (#mm/jj/aaaa#) ?

En ce jour mémorable du mardi 13/02/2007, tu as entrepris la lourde tâche
de taper sur ton clavier :
Bonjour,

J'ai une requête qui permet de savoir s'il existe pour un jour donné et
un id donné plusieurs événement ouvert à une même date 10/3/2005 (dans
l'exemple)
la requête SQL ci-dessous fonctionne sous SQL (elle ne ramène que 1
enregistrement)
sous DAO j'ai tous les enregistrement de id (soit 5)
Ceci semble signifier que la condition sur la date est ignorée en DAO
alors qu'elle ne l'est pas en SQL.
En résumé je ne comprends pas pourquoi.

SELECT * FROM [T] WHERE id='mon_id' AND (#10/3/2005# Between dd And df);
ddÚte début
dfÚte fin


merci de votre aide.


--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info