Ordner/Datei nicht zu löschen

Moderator: ModerationP

Ordner/Datei nicht zu löschen

Beitragvon joerg299 » 13. Aug 2017, 14:40

Hallo Zusammen,

Ich habe es nun endlich geschafft, einen SpeichernUnter-Dialog zu implementieren und darin auch bereits berechnete Ordner- und Dateinamen vorzugeben.

Da ich aber noch in der Erprobung bin, lösche ich die erstellten Ordner und Dateien immer wieder. Und da ist mein Problem. Während das erneute Überschreiben
meiner Datei tadellos läuft, kann ich jedoch den Ordner nicht löschen, ohne dass ich Access vorher geschlossen habe.

Mein Code hierzu:
Code: Alles auswählen
Private Sub Befehl14_Click()
   
    'Schaltfläche "tägliche Lagemeldung"
    'Speichern der Störung als *.pdf mit gleichzeitigem Ausdruck
   
    Dim pfad_vorgabe As String
    Dim jahr As Integer
    Dim monat_name As String
    Dim monat_zahl As String
    Dim monat As String
    Dim datum As String
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim zahl As Integer
    Dim datei As String
    Dim sB As FileDialog
    Dim saveFileAs As String
   
    DoCmd.OpenReport "rpt_vorgang", acViewPreview, , , acHidden
   
    Set db = CurrentDb
    Set rs = db.OpenRecordset("qry_vorgang_offen")
    zahl = rs.RecordCount
   
    pfad = "I:\xxx\xxx\90_IT-Lage-Ausfallmeldung\"
    jahr = Year(Date)
    monat_name = Format(Date, "mmmm")
    monat_zahl = Format(Date, "mm")
   
    monat = monat_zahl & "-" & monat_name
   
    datum = jahr & monat_zahl & Format(Date, "dd")
    datei = pfad & "Meldungen_" & jahr & "\" & monat & "\" & datum & "_IT-Lage_Ausfallmeldung.pdf"
   
    If Dir(pfad & "Meldungen_" & jahr, vbDirectory) = "" Then
        MkDir (pfad & "Meldungen_" & jahr)
    End If
   
    If Dir(pfad & "Meldungen_" & jahr & "\" & monat, vbDirectory) = "" Then
        MkDir (pfad & "Meldungen_" & jahr & "\" & monat)
    End If
   
    If zahl = 0 Then        'keine Lage-Einträge vorhanden
            Set sB = Application.FileDialog(msoFileDialogSaveAs)
            With sB
                .InitialFileName = datei
                If .Show = -1 Then
                    saveFileAs = .SelectedItems(1)
                    DoCmd.OutputTo acOutputReport, "rpt_vorgang_leer", acFormatPDF, saveFileAs
                Else
                    MsgBox ("Der Plan wurde nicht gespeichert!")
                    Exit Sub
                End If
            End With
    Else
            Set sB = Application.FileDialog(msoFileDialogSaveAs)
            With sB
                .InitialFileName = datei
                If .Show = -1 Then
                    saveFileAs = .SelectedItems(1)
                    DoCmd.OutputTo acOutputReport, "rpt_vorgang", acFormatPDF, saveFileAs
                Else
                    MsgBox ("Der Eintrag wurde nicht gespeichert")
                    Exit Sub
                End If
            End With
    End If
    DoCmd.Close acReport, "rpt_vorgang"
    Set db = Nothing
    Set rs = Nothing
    Set sB = Nothing
    monat = ""
   
End Sub


Wie gesagt, der Code als solches läuft. Ich vermute, dass irgendwas mit den Variablen db, rs und sB nicht korrekt läuft.
Wäre jemand so nett, mal zu schauen?

Vielen Dank und Gruß
Jörg
joerg299
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 36
Registriert: 24. Jan 2017, 17:04

Re: Ordner/Datei nicht zu löschen

Beitragvon steffen0815 » 13. Aug 2017, 16:11

Hallo,
es liegt nicht an deinem Code, ich denke das ist ein Bug von Access, dagegen kannst du nix tun, außer nochmals einen Bericht in einem "Dummy-Verzeichnis" zu speichern.
Zuletzt geändert von steffen0815 am 13. Aug 2017, 16:22, insgesamt 3-mal geändert.
Gruß Steffen
steffen0815
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 10794
Registriert: 15. Jan 2006, 12:15

Re: Ordner/Datei nicht zu löschen

Beitragvon joerg299 » 13. Aug 2017, 16:13

Hallo,
die Dateien lassen sich manuell löschen, aber der Ordner nicht!
Gruß
joerg299
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 36
Registriert: 24. Jan 2017, 17:04

Re: Ordner/Datei nicht zu löschen

Beitragvon steffen0815 » 13. Aug 2017, 16:20

... habe oben editiert.
Gruß Steffen
steffen0815
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 10794
Registriert: 15. Jan 2006, 12:15

Re: Ordner/Datei nicht zu löschen

Beitragvon joerg299 » 13. Aug 2017, 16:25

Hallo Steffen,

das mit dem Dummy-Verzeichnis habe ich jetzt nicht wirklich gerafft. Sorry
Was meinst du damit?

Gruß
joerg299
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 36
Registriert: 24. Jan 2017, 17:04

Re: Ordner/Datei nicht zu löschen

Beitragvon steffen0815 » 13. Aug 2017, 16:30

Hallo,
Access gibt den Pfad nicht frei, in welchem der (letzte) Bericht gespeichert wurde.

In der Testphase kannst du am Ende der Prozedur den (Dummy)Befehl einbauen :
Code: Alles auswählen
DoCmd.OutputTo acOutputReport, "rpt_vorgang_leer", acFormatPDF, environ("TEMP") & "dummy.pdf"

Dann sollte Access deinen Pfad freigeben und statt wird dessen das TEMP-Verzeichnis "okkupieren".

[EDIT] Nein das hilft nicht - dann habe ich auch keine (sinnvolle) Lösung :?

Access sperrt wohl jedes Verzeichnis, welches für OutPutTo genutzt wurde!

Btw:
Wenn es nicht nur in der Testphase wäre und das Verzeichnis immer gelöscht werden muss, könnte man den Bericht grundsätzlich im z.B. TEMP generieren und dann ins Zielverzeichnis schieben.
Macht in deinem Fall aber wohl eher wenig Sinn.
[/edit]
Gruß Steffen
steffen0815
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 10794
Registriert: 15. Jan 2006, 12:15

Re: Ordner/Datei nicht zu löschen

Beitragvon joerg299 » 13. Aug 2017, 17:34

Hallo,

dann werde ich wohl damit leben. Im operationellen Betrieb wird der Ordner sowieso nicht gelöscht.
Hier ging es nur um die Spielordner. Also alles nicht wirklich tragisch.
Die Funktionalität als solche ist da und das alleine zählt.

Dennoch Danke und ein schönes Rest-Weekend.

Gruß
joerg299
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 36
Registriert: 24. Jan 2017, 17:04

Re: Ordner/Datei nicht zu löschen

Beitragvon benny66 » 14. Aug 2017, 10:32

Hallo,
mit dem Tool "Unlocker" wird es gehen. Teste es mal.
Aus der Webseite:
Unlocker is the solution to the following types of Windows error messages
Cannot delete folder: It is being used by another person or program
Cannot delete file: Access is denied
There has been a sharing violation.
The source or destination file may be in use.
The file is in use by another program or user.
Make sure the disk is not full or write-protected and that the file is not currently in use.
1. Simply right click the folder or file and select Unlocker
2. If the folder or file is locked, a window listing of lockers will appear
3. Simply click Unlock All and you are done!
Gruß
Benny
benny66
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 114
Registriert: 22. Nov 2015, 21:56


Zurück zu Access Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 Gäste