Wissen van mappen

Status
Niet open voor verdere reacties.

rudyV

Gebruiker
Lid geworden
25 feb 2019
Berichten
34
Geacht forum,

Onderstaande code situeert in een module en start elke keer als de app opstart.
De bedoeling: Kijk of er een dossier bestaat dat ouder is dan 5 jaar. Zo ja, wis het record en daarna de bijbehorende mappen.
Het verwijderen van het record gaat goed.
De map heeft submappen met daarin files.
De map wordt gewist zonder eerst de files uit de submappen te wissen.
De code functioneert als bedoeld met F5, echter genereert een foutmelding bij opstart: "Compilatiefout. Code niet compatibel met versie, platform of architectuur."

Graag uw hulp.
Code:
Dim rs As Recordset, db As Database
Dim FSO As Object

Set db = CurrentDb
Set rs = db.OpenRecordset("Gegevens", dbOpenDynaset)
If Not rs.BOF And Not rs.EOF Then
     rs.MoveFirst
     Do Until rs.EOF
         strD = Nz(rs.Fields("Constatering"))
         sDossier = Nz(rs.Fields("Dossier"))
         If strD = 0 Then
             GoTo sNext
        End If
        strD2 = DateAdd("yyyy", 5, strD)
        
        If CDate(strD2) <= Date Then
            db.Execute "delete from gegevens where dossier='" & sDossier & "'"
            
            sPath = Application.CurrentProject.Path
            strFolder = sPath & "\" & sDossier
            'sFolder = Dir(strFolder, vbDirectory)
            Set FSO = CreateObject("scripting.filesystemobject")
          
            If FSO.FolderExists(strFolder) = True Then
                CreateObject("Scripting.FileSystemObject").DeleteFolder strFolder
            End If
        End If
sNext:
        rs.MoveNext
    Loop
    
    rs.MoveFirst
End If
Set rs = Nothing
Set FSO = Nothing
 
Laatst bewerkt:
Niet de meest handige code, maar als hij werkt, dan ligt het niet aan de code. Als hij het doet met <F5> moet-ie het altijd doen. Dan ligt het probleem dus ergens anders. Maar dát krijgen we dus niet te zien…
 
Dank voor je antwoord.
Voor zover mijn kennis reikt heb ik de "architectuur" van dit gedeelte nog eens kritisch bekeken.
Blijkt, dat ik de procedure dezelfde naam heb gegeven als de module waarin het ligt opgeslagen.
Beetje dom (kennelijk) maar jouw antwoord leidde mij wel naar de oplossing. Dank.

Je zegt: "Niet de meest handige code"
Gezien mijn kennis van access, kan ik niet anders dan je gelijk geven.
Maar, ik leer en blijf dat graag doen.

Kun je mij aangeven hoe de code anders kan?
Met name het gedeelte van het wissen van de mappen?

Dank, nogmaals.

Ruud.
 
Begin eens met de query om de records te selecteren te baseren op het datumfilter, dus met een WHERE in het statement. Als de recordset de juiste records filtert, kun je alle records verwijderen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan