Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Carl am Oktober 29, 2017, 10:21:23

Titel: Verzeichnis anlegen
Beitrag von: Carl am Oktober 29, 2017, 10:21:23
Ich habe mal ne Frage,

ich lege derzeit mit MkDir ein Verzeichnis an und kopiere da eine Datei hinein. So wie hier:


Sub VerzeichnisAnlegen()
    On Error Resume Next
     MkDir DLookup("Hilfstexte", "tblHilfstexte", "ID=1") & Me!WOOrdnername
'wobei WOOrdnername ein Feld in der DB ist.
FileCopy "S:\A\!Manual.docx", "S:\A\" & Me!WOOrdnername & "\Manual.docx"
DoCmd.RunCommand acCmdSaveRecord
DoCmd.Close
End Sub


Wie kann ich bei MkDir und FileCopy verhindern, dass das Verzeichnis erneut angelegt wird oder der file überschrieben wird? Statt dessen soll eine Fehlermeldung kommen, dass das Verzeichnis/Datei schon existiert.

Carl
Titel: Re: Verzeichnis anlegen
Beitrag von: MzKlMu am Oktober 29, 2017, 10:32:35
Hallo,
so sollte das klappen:
Sub VerzeichnisAnlegen()
    On Error Resume Next
If Dir("S:\A\" & Me!WOOrdnername) > "" Then
     MsgBox "Gibt es schon"
     Exit Sub
End If
     MkDir DLookup("Hilfstexte", "tblHilfstexte", "ID=1") & Me!WOOrdnername
'wobei WOOrdnername ein Feld in der DB ist.
FileCopy "S:\A\!Manual.docx", "S:\A\" & Me!WOOrdnername & "\Manual.docx"
DoCmd.RunCommand acCmdSaveRecord
DoCmd.Close
End Sub


PS:
Mit 80 Beiträgen im Forum, solltest Du eigentlich gelernt haben, dass man für Codedarstellungen die Codetags des Forums benutzt.
Titel: Re: Verzeichnis anlegen
Beitrag von: ebs17 am Oktober 29, 2017, 12:37:15
ZitatStatt dessen soll eine Fehlermeldung kommen, dass das Verzeichnis/Datei schon existiert.
Was soll ein User mit einer Meldung anfangen, wenn der Code Mist macht? Eine Meldung "Du bist gegen die Wand gefahren" wäre für Auto und eigene Gesundheit nicht befriedigend. Besser ist doch, dass man bei zu erwartenden Zuständen prüft und in Auswertung der Prüfung reagiert.

If Dir("S:\A\" & Me!WOOrdnername, vbDirectory) > "" Then ' Verzeichnis existiert
If Dir("S:\A\" & Me!Filename) > "" Then ' Datei existiert


DoCmd.RunCommand acCmdSaveRecord
Welchen besonderen Sinn macht diese Anweisung? Bei einem gebundenen Formular wird spätestens mit dem Schließen des Formulars der aktuelle Datensatz automatisch gespeichert. Ein ungebundenes Formular hat keine Datensätze, die zu speichern wären.