Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Welches Design für für File-Management

Begonnen von Carl, Oktober 08, 2017, 12:11:00

⏪ vorheriges - nächstes ⏩

Carl

Ich habe mal eine Frage, welche Lösung Eurer Meinung nach sinnvoll und einfach ist.

Ich habe ein Feld [Ordnername], in dem man Namen eintragen kann, die als Ordner entstehen sollen. Dann brauche ich einen Button, der beim Klicken einen Ordner erstellt, der so heißt wie der Name in dem Feld. Sollte der Ordner schon existieren, soll eine Fehlermeldung zurück gegeben werden.

In den Ordner sollen nach dem Erstellen bereits vorhandene Datei-Vorlagen (Formulare in pdf, doc etc.) hinein kopiert werden.

Wie macht man sowas am Einfachsten? Oder gibt es einen besseren Ansatz?

Carl

Zweck: Es sollen ausgefüllte Formulare (Dateien unterschiedlichster Art) gesammelt werden, die, weil es viele sein werden, mittels der Datenbank dann nach Inhalten sortiert dargestellt werden, was übersichtlicher ist als eine Baumstruktur auf dem Laufwerk.

MzKlMu

Hallo,
ZitatEs sollen ausgefüllte Formulare gesammelt werden
ich glaube, Du hast falsche Vorstellungen von Access. Es ist nicht notwendig ausgefüllte Formulare zu sammeln.
Man verwendet ein Formular, das auf die anzuzeigenden Daten gefiltert wird.

Beschreibe das Vorhaben doch mal im kompletten Zusammenhang.
Gruß Klaus

Beaker s.a.

Hallo Carl,
Wie Klaus schon sagt
ZitatEs ist nicht notwendig ausgefüllte Formulare zu sammeln.
Dazu nimmt man besser einen Bericht mit der gleichen DS-Herkunft wie
das Formular, und speichert ihn als .PDF (Code dazu findest du zu Hauf).
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Carl

Ach so, ich meinte Formulare in z.B. Word. Also Dateien.

Die sollen nicht generiert werden, sondern gesammelt, da sie aus anderen Quellen stammen und unterschiedliche Formate haben.

Gibt es einen VBA-Code, der hinter einem button einen Ordner erstellt, sofern der noch nicht existiert?

daolix

hallo

ZitatGibt es einen VBA-Code, der hinter einem button einen Ordner erstellt, sofern der noch nicht existiert?
versuch
Private Declare Function MakeSureDirectoryPathExists Lib "imagehlp.dll" (ByVal sPath As String) As Long

Private Sub DEINBUTTON_Click()
MakeSureDirectoryPathExists "C:\DeinPath1\DeinUPath1\"
End Sub

Anpassungen hinsichtlich des Paths und Buttonnamens musst du noch vornehmen.

Carl

#5
Ich habe es hingekriegt mit

Sub VerzeichnisAnlegen()
     On Error Resume Next
     MkDir "N:\ABCD\workorderkatalog\" & Me!WOOrdnername
     'wobei WOOrdnername ein Feld in der DB ist.
End Sub

Private Sub Befehl122_Click()
On Error GoTo Err_Befehl122_Click
     DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
     VerzeichnisAnlegen
Exit_Befehl122_Click:
     Exit Sub
Err_Befehl122_Click:
     MsgBox Err.Description
     Resume Exit_Befehl122_Click
End Sub

Er legt jetzt den Ordner an, und wenn ein Ordner vorhanden ist, macht er nix.

Ich habe noch Fragen:

* Ich würde gern den Pfad "N:\ABCD\workorderkatalog" in diesem Code abrufen lassen aus der Tabelle "tblcodeschnipsel", um die Datenbank später wartungsärmer verschieben zu können. In dieser Tabelle ist "N:\ABCD\workorderkatalog\" im Datensatz mit der ID=1 angelegt. Was muss ich oben eintragen, damit die Funktion (MkDir "N:\ABCD\workorderkatalog\" & Me!WOOrdnername) ausgeführt wird, indem der Pfad aus der Tabelle abgerufen wird?

* nächste Frage: In den neu zu erstellenden Ordner sollen just beim erstellen des Ordners IMMER vier gleiche Dateien einkopiert werden: 1.doc, 2.doc, 3.doc und 4.doc. Diese befinden sich im Ordner "N:\ABCD\vorlagen". Welchen Code muss ich einbauen, um die da hinein zu kopieren?

Carl

daolix

Zitat* nächste Frage: In den neu zu erstellenden Ordner sollen just beim erstellen des Ordners IMMER vier gleiche Dateien einkopiert werden: 1.doc, 2.doc, 3.doc und 4.doc. Diese befinden sich im Ordner "N:\ABCD\vorlagen". Welchen Code muss ich einbauen, um die da hinein zu kopieren?


Sub VerzeichnisAnlegen()
     On Error Resume Next
     MkDir "N:\ABCD\workorderkatalog\" & Me!WOOrdnername
     'wobei WOOrdnername ein Feld in der DB ist.
FileCopy N:\ABCD\vorlagen\1.doc, N:\ABCD\workorderkatalog\" & Me!WOOrdnername & "\1.doc"
.....'
End Sub



Zitat* Ich würde gern den Pfad "N:\ABCD\workorderkatalog" in diesem Code abrufen lassen aus der Tabelle "tblcodeschnipsel", um die Datenbank später wartungsärmer verschieben zu können. In dieser Tabelle ist "N:\ABCD\workorderkatalog\" im Datensatz mit der ID=1 angelegt. Was muss ich oben eintragen, damit die Funktion (MkDir "N:\ABCD\workorderkatalog\" & Me!WOOrdnername) ausgeführt wird, indem der Pfad aus der Tabelle abgerufen wird?

versuch MkDir Dlookup(............) & Me!WOOrdnername
die Punkte anpassen

Carl

Mit

MkDir DomWert("Hilfstexte";"tblHilfstexte";"ID=1")

will er immer debuggen. Ich glaube ich habe da Hochkommas Anführungszeichen nicht richtig. Kannst Du Die Zeile mal richtig schrieben?

daolix

War jetzt eher als VBA gemeint:
Sub VerzeichnisAnlegen()
     On Error Resume Next
     MkDir Dlookup("Hilfstexte","tblHilfstexte","ID=1") & Me!WOOrdnername
     'wobei WOOrdnername ein Feld in der DB ist.
FileCopy N:\ABCD\vorlagen\1.doc, N:\ABCD\workorderkatalog\" & Me!WOOrdnername & "\1.doc"
.....'
End Sub

Carl

Ach, wunderbar, er legt den ordner an.

Sag mal, ist es nicht möglich, den gesamten Inhalt eines Ordners in den neu anzulegenden ordner zu kopieren? Dann muss man später nicht mehr ran, wenn doch noch Datei hinzu kommen oder weg fallen.

daolix

versuch

With CreateObject("wscript.shell")
.Run Environ$("comspec") & " /c copy " & "N:\ABCD\vorlagen\*.*" & " " & DLookup("Hilfstexte", "tblHilfstexte", "ID=1") & Me!WOOrdnername & "\", 0, True
End With

Carl

Wo muss ich das den implementieren?

Ich habe jetzt den Code:

Sub VerzeichnisAnlegen()
     On Error Resume Next
     MkDir DLookup("Hilfstexte", "tblHilfstexte", "ID=1") & Me!WOOrdnername
'wobei WOOrdnername ein Feld in der DB ist.
End Sub

     
Private Sub Befehl122_Click()
On Error GoTo Err_Befehl122_Click
     DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
     'DoCmd.GoToRecord , , acNewRec
     VerzeichnisAnlegen
Exit_Befehl122_Click:
     Exit Sub
Err_Befehl122_Click:
     MsgBox Err.Description
     Resume Exit_Befehl122_Click
End Sub

daolix

ggf so, ist aber evtl eher suboptimal weil ich jetzt nicht getestet hab inwieweit schon vorhandene Dateien den Copy befehl zum abbruch bringen, ggf müsste man die schon vorhandenen vorher löschen.
Sub VerzeichnisAnlegen()
     On Error Resume Next
     MkDir DLookup("Hilfstexte", "tblHilfstexte", "ID=1") & Me!WOOrdnername
'wobei WOOrdnername ein Feld in der DB ist.
With CreateObject("wscript.shell")
.Run Environ$("comspec") & " /c copy " & "N:\ABCD\vorlagen\*.*" & " " & DLookup("Hilfstexte", "tblHilfstexte", "ID=1") & Me!WOOrdnername & "\", 0, True
End With
End Sub

Carl

Uff, das funktioniert nicht, selbst bei sämtlichen Kombinationen in der Umformulierung ... :-(

Sieht jemand, was an diesem code falsch ist? Fehler beim kompilieren ist: "Zeilennummer oder Sprungmarke oder Anweisung oder Anweisungsende" falsch.


FileCopy N:\ABC D\Massnahmen\AEAP\Ablauf(plan)_Inhalte\Standardaufgaben\TREP\workorderkatalog\ordnervorlage\Aufgabenbeschreibung.docx, N:\ABC D\Massnahmen\AEAP\Ablauf(plan)_Inhalte\Standardaufgaben\TREP\workorderkatalog" & Me!WOOrdnername & "\Aufgabenbeschreibung.docx"

DF6GL

Hallo,


ZitatFileCopy "N:\ABC D\Massnahmen\AEAP\Ablauf(plan)_Inhalte\Standardaufgaben\TREP\workorderkatalog\ordnervorlage\Aufgabenbeschreibung.docx", "N:\ABC D\Massnahmen\AEAP\Ablauf(plan)_Inhalte\Standardaufgaben\TREP\workorderkatalog\" & Me!WOOrdnername & "\Aufgabenbeschreibung.docx"