OVH Cloud OVH Cloud

Date-Heure avec Access-DAO

5 réponses
Avatar
YannX
Bonsoir a tous,

Je veux traiter des enregistrements Access par lots......
ce qui signifie que je memorise dMAJ = Now() à une valeur
ensuite chargée dans un champ pour mon lot d'enregistrements.

Ensuite je veux recupérer/traiter ces date-heures en SQL,
en particulier effacer l'ensemble des enregistrements
n'ayant pas cette valeur Date-Heure (pas seulement le jour !)

1°/ question n°1 : comment formater l'expression SQL !
(je voudrais effectivement tester Date ET HEURE ! dans mon filtre !)

2°/ comment la passer a mon RecordSet ?

f_SQL = "DELETE * FROM Table" & fWHERE_SQL(aFilter)
Set tRst = db.OpenRecordset(f_SQL)

> Operation non valide ! ? ? ?

Bon, d'accord, cela passe avec :


f_SQL = "SELECT* FROM Table" & fWHERE_SQL(aFilter)
Set tRst = db.OpenRecordset(f_SQL)
With tRst
While NOT .EOF
.Delete
Wend
END with


Mais n'est-il pas possible d'exécuter une instruction SQL " DELETE....."

Merci de vos conseils.

Yann

5 réponses

Avatar
jmn
Puisque personne ne semble vouloir vous répondre ...
1°/ question n°1 : comment formater l'expression SQL !
(je voudrais effectivement tester Date ET HEURE ! dans mon filtre !)


le séparateur de Date/Heure dans Access est #. Donc on peut écrire des
expressions de comparaison ou d'affectation du style :

... madateheure=#01/12/2004 23:45# ....


2°/ comment la passer a mon RecordSet ?

f_SQL = "DELETE * FROM Table" & fWHERE_SQL(aFilter)



f_sql="delete * from table where monchampdate=#" &
format(variabledate,"mm/dd/yyyy hh:nn:ss") & " # "
bd.execute f_sql


Mais n'est-il pas possible d'exécuter une instruction SQL " DELETE....."


voir au dessus...
Avatar
YannX
Bonsoir,

Et merci de cette réponse :
une precision sur le 1°/ le séparateur # est reconnu donc pour Access
donc a défaut de lire un TIMESTAMP, on fera un :
"#" & Format(dMaj,"dd/mm/aa hh:mm::ss") & "#"
savez-vs s'il l'est aussi, avec les heures bien sûr, pour un autre SQL ?

Quant au 2°/ n'ayant pas réussi avec OpenRecordSet("DELETE....
j'ai by-passé le pb. en faisant les Rst.Delete...... dans une vulgaire
boucle
Dommage ; pourquoi le SQL ne passerait pas ?
Que je ré-initialize Set Rst = db.OpenrecrdSet("SELECT...) de nombreuses
fois ?

@+
Et merci encore
Bon WE


"jmn" a écrit dans le message de
news:
Puisque personne ne semble vouloir vous répondre ...
> 1°/ question n°1 : comment formater l'expression SQL !
> (je voudrais effectivement tester Date ET HEURE ! dans mon filtre


!)
le séparateur de Date/Heure dans Access est #. Donc on peut écrire des
expressions de comparaison ou d'affectation du style :

... madateheure=#01/12/2004 23:45# ....


> 2°/ comment la passer a mon RecordSet ?
>
> f_SQL = "DELETE * FROM Table" & fWHERE_SQL(aFilter)

f_sql="delete * from table where monchampdate=#" &
format(variabledate,"mm/dd/yyyy hh:nn:ss") & " # "
bd.execute f_sql

>
> Mais n'est-il pas possible d'exécuter une instruction SQL " DELETE....."
voir au dessus...





Avatar
Eric
Bonjour YannX,

Pour le 2°
Au risque de me tromper, sous Access, on ouvre (affiche) une requête
Sélection via OpenRecordset, (OpenQuery) mais pas une requête Action.
Celle-ci n'affichant rien doit être exécutée.

Ce qui donne pour une requête Sélection
Dim Rst as DAO.Recordset
Set RstÛ.OpenRecordset("Select * from MaTable where...;")
...

et pour une requête Action
Dim strSQL as String
strSQL = "Delete * from Matable where ...;"
CurrentDb.Execute strSQL

A+
Eric

PS: Pour le 1°, pour éviter la concaténation avec les #, il est possible
de faire :
Format(dMaj,"#mm/dd/aa hh:nn:ss#")

A+
Eric

"YannX" écrivait
news::

Bonsoir,

Et merci de cette réponse :
une precision sur le 1°/ le séparateur # est reconnu donc pour Access
donc a défaut de lire un TIMESTAMP, on fera un :
"#" & Format(dMaj,"dd/mm/aa hh:mm::ss") & "#"
savez-vs s'il l'est aussi, avec les heures bien sûr, pour un autre SQL
?

Quant au 2°/ n'ayant pas réussi avec OpenRecordSet("DELETE....
j'ai by-passé le pb. en faisant les Rst.Delete...... dans une vulgaire
boucle
Dommage ; pourquoi le SQL ne passerait pas ?
Que je ré-initialize Set Rst = db.OpenrecrdSet("SELECT...) de
nombreuses
fois ?

@+
Et merci encore
Bon WE


"jmn" a écrit dans le message de
news:
Puisque personne ne semble vouloir vous répondre ...
> 1°/ question n°1 : comment formater l'expression SQL !
> (je voudrais effectivement tester Date ET HEURE ! dans mon
> filtre


!)
le séparateur de Date/Heure dans Access est #. Donc on peut écrire
des expressions de comparaison ou d'affectation du style :

... madateheure=#01/12/2004 23:45# ....


> 2°/ comment la passer a mon RecordSet ?
>
> f_SQL = "DELETE * FROM Table" & fWHERE_SQL(aFilter)

f_sql="delete * from table where monchampdate=#" &
format(variabledate,"mm/dd/yyyy hh:nn:ss") & " # "
bd.execute f_sql

>
> Mais n'est-il pas possible d'exécuter une instruction SQL "
> DELETE....."
voir au dessus...










Avatar
Eric
.../...


Eric écrivait
PS: Pour le 1°, pour éviter la concaténation avec les #, il est possible
de faire :
Format(dMaj,"#mm/dd/aa hh:nn:ss#")





Lire :Format(dMaj,"#mm/dd/yy hh:nn:ss#")

Eric
Avatar
YannX
Merci pour tes précisions ; cela parait évident "j'aurais dû y penser tout
seul" en le lisant, mais...


"Eric" a écrit dans le message de
news:
.../...


Eric écrivait
> PS: Pour le 1°, pour éviter la concaténation avec les #, il est possible
> de faire :
> Format(dMaj,"#mm/dd/aa hh:nn:ss#")
>


Lire :Format(dMaj,"#mm/dd/yy hh:nn:ss#")

Eric