Effacer plusieurs enregistrement "Date"

Signaler
Messages postés
116
Date d'inscription
mercredi 5 juin 2002
Statut
Membre
Dernière intervention
17 septembre 2008
-
Messages postés
116
Date d'inscription
mercredi 5 juin 2002
Statut
Membre
Dernière intervention
17 septembre 2008
-
Salut a tous,

j'ai un petit problème pour effacez des enregistrement a partir de la date, je doit en faite effacez les Today-60jours je fait comme cela:
Public Sub CleanDb()
Dim dtRemoveDate As Date
Set mainDb = New adodb.Connection
mainDb.Open strMainDb
Set main = New adodb.Recordset
' Date - 60 Jours
dtRemoveDate = "15/11/2002"
main.Open "DELETE FROM main Where Date < " & dtRemoveDate, mainDb, 1, 2
main.Close
Set main = Nothing
End Sub

Mais j'ai une erreur a "main.close": "Operation non alloué"

Je ne sais si ma requete est bonne. J'utilise +/- cette methode pour lire et écrire sans probleme. Mais là je seche.

Merci de votre aide et patience
Olivier

1 réponse

Messages postés
116
Date d'inscription
mercredi 5 juin 2002
Statut
Membre
Dernière intervention
17 septembre 2008

Après une bonne nuits de repos, j'ai trouvé deux solutions qui ce resemble fort:
Dim dtRemoveDate As Date
Set mainDb = New adodb.Connection
mainDb.Open strMainDb
Set main = New adodb.Recordset
dtRemoveDate = DateAdd("d", -60, Now) '-60 jours
dtRemoveDate = Format(dtRemoveDate, "Short Date") 'Si format short date dans le champs de la DB
main.Open "main", mainDb, adOpenDynamic, adLockOptimistic
main.Find "Date <= #" & dtRemoveDate & "#"
Do While Not main.EOF
main.Delete
main.MoveNext
Loop
main.Close
Set main = Nothing


Dim dtRemoveDate As Date
Set mainDb = New adodb.Connection
mainDb.Open strMainDb
Set main = New adodb.Recordset
dtRemoveDate = DateAdd("d", -60, Now) '-60 jours
dtRemoveDate = Format(dtRemoveDate, "Short Date") 'Si format short date dans le champs de la DB
main.Open "SELECT * FROM main WHERE Date <= #" & dtRemoveDate & "#", mainDb, 1, 2
Do While Not main.EOF
main.Delete adAffectCurrent
main.Update
main.MoveNext
Loop
main.Close
Set main = Nothing


Merci
Olivier