Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: aoibhneach am 08.07.21 - 08:55:46
-
Guten Morgen,
ich möchte Dokumente exportieren, so dass diese mit Ihrer ursprünglichen Maske zur Verfügung stehen. Das geht mit der "Print"-Methode in "UIView" in einer Schleife schon ganz gut. Die Dokumente befinden sich danach in einzelnen PDF-Dateien auf dem "Desktop". Letzteres ist nicht tragisch, weil sich der Desktop im Datei-Explorer auch als Ordner darstellt.
Aber: Leider haben alle einen vom System vorgegebenen Namen, bestehend aus Druck-Datum+Druck-Uhrzeit+Name der Datenbank+Name der Ansicht. Das ist nicht zu ändern, aber ausgesprochen "blöd". ;)
Die Methode "Print" übergibt es so direkt an die virtuelle "Drucker-Queue."
Gibt es einen anderen Weg? Ich kann mir im Moment auch nicht vorstellen, dass Lotus Notes Mittel anbietet, nachträglich Dateinamen auf Betriebssystem-Ebene zu ändern, oder?
Vielen Dank für Eure Anregungen und Grüße
Nils
-
... Ich kann mir im Moment auch nicht vorstellen, dass Lotus Notes Mittel anbietet, nachträglich Dateinamen auf Betriebssystem-Ebene zu ändern, oder?
Ich schon. https://help.hcltechsw.com/dom_designer/9.0.1/appdev/LSAZ_NAME_STATEMENT.html (https://help.hcltechsw.com/dom_designer/9.0.1/appdev/LSAZ_NAME_STATEMENT.html)
-
Hallo eknori,
hab es ausprobiert und es funktioniert. Sehr schön. Hierfür Danke !!
Ein kleines "aber":
Sowie ich im Befehl "Name" jedoch "wildcards" im Dateinamen der Quelldatei nutze, also z.B."*" zum Maskieren des variablen Datums und der Uhrzeit im Dateinamen, findet der Befehl "Name" die Datei nicht.
Leider enthalten die Dateinamen immer Datum und Uhrzeit.
Was tun? Gibt es eine Lösung?
Danke
-
Man könnte zunächst alle files in dem Zieldirectory einlesen. Das funktioniert mit wildcard. Dann hat man die genauen Dateinamen.
Anschließend über die Liste iterieren, und die neuen Namen vergeben
https://help.hcltechsw.com/dom_designer/9.0.1/appdev/LSAZ_DIR_FUNCTION_EX.html (https://help.hcltechsw.com/dom_designer/9.0.1/appdev/LSAZ_DIR_FUNCTION_EX.html)
-
Hallo Eknori,
Volltreffer! :)
Ich habe schon so viele NotesDb'n entwickelt. Aber mit diesen Dingen hatte ich bisher keine Berührung. So durfte ich wieder etwas lernen und bin begeistert.
Nochmals vielen Dank .
Viele Grüße, Nils
-
Guten Morgen,
es tritt doch noch ein Zugriffsproblem auf, aber erst, nachdem einige Dateien verschoben wurden. Kann ich diesen Thread für eine weitere Frage nutzen oder ist er abgeschlossen?
Viele Gruße
-
Du kannst hier weiter schreiben.
Ich würde einen neuen thread mit Verweis auf den bestehenden aufmachen.
So wie beim HCL Support. Ein Issue pro case.
-
Follow up: https://atnotes.de/index.php/topic,63292.msg403558.html#msg403558 (https://atnotes.de/index.php/topic,63292.msg403558.html#msg403558)
Guten Morgen,
es tritt doch noch ein Zugriffsproblem auf, aber erst, nachdem einige Dateien verschoben wurden. Kann ich diesen Thread für eine weitere Frage nutzen oder ist er abgeschlossen?
Viele Gruße
Guten Morgen,
ich hoffe, das Zitieren ist so gemeint.
Alles lief prima. Aber dann traten plötzlich Zugriffsprobleme auf.
Vielen Dank für Deine/Eure Hilfe!!!
- Es wird, nachdem einige Dateien erfolgreich verschoben wurden, plötzlich ein Verzeichnis mit dem Namen aus "neuesFile" angelegt. Dann bricht die Aktion mit Fehler ab.
- Außerdem hatte ich mitunter auch die Fehlermeldung, dass "filename = Dir$()" nicht ausgeführt werden konnte.
- Muss ich zum Abschluss die verwendeten Dateien altesFile und neuesFile freigeben? "Reset" ist sicher nicht richtig, oder?
Das "Überspringen" von Dokumenten, die eventuell einen Replizierkonflikt haben, ist im Code-Ausriss nicht enthalten.
Anmerkung: Ich muss jede Datei sofort aus dem Quellverzeichnis löschen, weil ich sonst das wichtige Merkmal "SchluesselNr" verliere. Diese benötige ich für den neuen Namen.
Sub Click(Source As Button)
' Im Original stehen hier Deklarationen
Set vc = view.AllEntries
Set entry = vc.GetFirstEntry
Set doc = entry.Document
pageSeparator = 2 'Neue Seite
Dim altesFile, neuesFile As String
Dim pathname As String
Dim filename As String
'Es folgt das Muster des Dokumentnamen der Form: "Datum_Uhrzeit-Dokumentname.pdf"
'fuer den Befehl: filename = Dir$(pathname,0)
pathname = "C:\Users\xxxxxx\Desktop\*Dokumentname.pdf*"
Do Until doc Is Nothing
Call uiview.SelectDocument(doc)
SchluesselNr = doc.SchluesselNr(0)
Call uiview.Print(1, , , ,pageSeparator ,"Form_des_Dokuments", , , ,"PDF24")
filename = Dir$(pathname,0)
altesFile = "C:\Users\xxxxxx\Desktop\" & filename
filename = Dir$()
neuesFile = "E:\ZIELVERZEICHNIS\" & SchluesselNr & "_Export_Dokument.pdf"
Name altesFile As neuesFile
Call uiview.DeselectAll
Set entry = vc.GetNextEntry(entry)
Set doc = entry.Document()
Loop
End Sub
-
evtl ist es geschickter, erst alle filenames ( in ein variant / eine List ) einzulesen, und anschließend über die Liste zu iterieren.
Schließen muss man die files m.W. nach nicht explizit.
-
Hallo eknori,
vielen Dank. Ich habe doch noch ein neues Thema gestartet; in der Annahme, dass das richtig war.
Viele Grüße
Nils