OVH Cloud OVH Cloud

Question

7 réponses
Avatar
Sonia
éBonjours

Est il possible de creer une fonction dans un module qui supprime une ligne enregistrée dans une requête, à partir d'une date de fin, contenue dans cette même ligne, et qui est inferieure à la date actuelle ( = Date du serveur = Now() ) ?

Exemple
Dans une Requête
N_Article ! Date Enregistrement ! Date Fin !
1 19/10/2004 15:15:45 21/10/2004 10:45:45

Module ( Je ne connais pas le code donc je vais dire en texte littéral )

Select (enregistrement =[Date fin] par N_Article) In (Requête)
If Date Fin < date du serveur Then Supprime ( enregistrement)

Voila Mon problème Est ce faisable en code ?


Merci d'avance
Sonia

7 réponses

Avatar
3stone
Salut Sonia,

"Sonia"
Est il possible de creer une fonction dans un module qui supprime une ligne enregistrée dans une
requête, à partir d'une date de fin, contenue dans cette même ligne, et qui est inferieure à la date

actuelle ( = Date du serveur = Now() ) ?

Exemple
Dans une Requête
N_Article ! Date Enregistrement ! Date Fin !
1 19/10/2004 15:15:45 21/10/2004 10:45:45

Module ( Je ne connais pas le code donc je vais dire en texte littéral )

Select (enregistrement =[Date fin] par N_Article) In (Requête)
If Date Fin < date du serveur Then Supprime ( enregistrement)

Voila Mon problème Est ce faisable en code ?


Tout est faisable par code, mais....


Tu as une requête qui te retourne une date,
et tu voudrais supprimer un enregistrement selon un critère
concernant cette date, c'est ca ?

Dans ce cas, quelque chose comme :

Dim sSQL As String
sSQL = "Delete * From LaTable " _
& "Where Ladate =" _
& Format(DLookUp("LeChamp","LaRequete","critères?"),"#mm-dd-yyyy#") & ";"

Currentdb.execute sSQL



--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------

Avatar
3stone
Salut,

"Sonia"
La requête me donne la date de fin qui est calculee en fonction de la date d'enregistrement
contenu dans une table A.

Par contre pour Faire une selection automatique de la date du serveur c'est à dire de la date
actuelle. Là j 'ai un problème. Je l'ai fait pour une date d'enregistrement dans la table A. Mais un

selection automatique dans un module, la je ne connais pas le code.
De plus la suppression ne se fait que si
Date fin < Date Actuelle du serveur.



une sélection automatique de la date du serveur... ?

tu parle de la date système ?

en VBA tu l'obtient par la fonction: Date


--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------

Avatar
Sonia
Boujours
Houla c'est chaud avec ton code. J'ai fais ça matière de code. Mais c'est bourré d'erreur par manque de connaissance.

Voici ce que j'ai fais
Tout d'abord la requête contient ceci :

Champ : N_Article
Champ : DateCréation
Champ : Datefin (Fin de parution d'article)
Champ : Date de Suppression (Suppression définitive de l'article)

Code Module

Function fnsSQL(Date de Suppression As Date, N_Article) As Date
'MaN_Article = Nz(MaN_Article)
'MaN_Article = Val(MaN_Article)
Dim sSQL As string
fnsSQL = "Delete [Date de Suppression] From [R] Where N_Article =" & MaN_Article & "where Format(DLookUp("[Date de Suppression]", "[R]", "N_Article =" & MaN_Article)" ,"#mm-dd-yyyy#") & ", "Currentdb.execute fnsSQL

End Function

Pouvez me réparer mes erreurs ?

Merci d'avance
Cordialement
Sonia!!!
Avatar
Sonia
Oup J'ai oublier de vous demander où insère-t-on dans la fonction ceci ?

Date de Suppression > Date du systeme
Avatar
3stone
Salut,

"Sonia"

Voici ce que j'ai fais
Tout d'abord la requête contient ceci :

Champ : N_Article
Champ : DateCréation
Champ : Datefin (Fin de parution d'article)
Champ : Date de Suppression (Suppression définitive de l'article)



Ok...
Mais tout cela se retrouve bien dans une table,
autant le supprimer directement dans la table.
Car, je pense que veux supprimer un enregistrement ?

Pose le problème.

Tu veux supprimer un enregistrement qui possède une
certain numéro et dont le champ [Date de suppression]
est dépassé ( plus ancien que la date actuelle )

C'est ca ?


Si oui, crée une simple requête de suppression avec les champs:
[N_Article] et [Date de suppression]

Comme critère, tu mets sous N_Article

[Quel numéro ?]

et que tu pourra remplacer par la suite par
Forms![NomDuForm]![NomListeOuControle]

Sous le N_Article, tu mets

< Date()


Ce qui donnerai comme requete SQL la chaîne suivante:

DELETE *
FROM LaTable
WHERE (( No_Article = [Quel numéro ?] ) AND ( [Date de suppression] < Date() ));



--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------

Avatar
Sonia
Bonjour,
J' ai fait ce que tu m'a dis mais cela ne fonctionne pas.
Voici ce que j'ai fait

Le code module est le suivant
Function fnsSQL(Date de Suppression As Date, N_Article) As Date
'MaN_Article = Nz(MaN_Article)
'MaN_Article = Val(MaN_Article)
Dim sSQL As string
fnsSQL = "Delete [Date de Suppression] From [R] Where N_Article =" &
MaN_Article & "where Format(DLookUp("[Date de Suppression]", "[R]",
"N_Article =" & MaN_Article)" ,"#mm-dd-yyyy#") & ", "Currentdb.execute
fnsSQL

End Function

La requête

Requete : Suppression automatique
Champ : N_Article : Date de Suppression
Critère : [Quel Numero ?] : <Date()

Dans le sql de la requête :
SELECT R.N_Article, R.[Date de Suppression]
FROM R
WHERE (((R.N_Article)=[Quel numéro ?]) AND ((R.[Date de Suppression])<Date()))

J y ai rajouter ton code :

DELETE*
FROM La Table
WHERE (( No_Article = [Quel numéro ?] ) AND ( [Date de suppression] < Date()
));

ce qui donne ceci

SELECT R.N_Article, R.[Date de Suppression]
FROM R
WHERE (((R.N_Article)=[Quel numéro ?]) AND ((R.[Date de Suppression])<Date()))
DELETE*
FROM R
WHERE (( No_Article = [Quel numéro ?] ) AND ( [Date de suppression] < Date()
));

Ca ne fonctionne pas
Sinon puis je t envoyé une bd exemple ?

Merci d'avance
Avatar
3stone
Salut,

"Sonia"

[...]
Ca ne fonctionne pas
Sinon puis je t envoyé une bd exemple ?



Ok...



enlève les ZZZZ

--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------