Domino 9 und frühere Versionen > ND8: Entwicklung
Dateianhänge von einem Feld in ein anderes verschieben - wie gehts?
(1/1)
ampfi:
Hallo zusammen,
ich mache gerade eine Auftrags-Datenbank. Hierbei sollen auch Dateien an einen Auftrag gehängt werden, die nach der Freigabe des Auftrags für die Benutzer nicht mehr bearbeitbar sein sollen.
In meinem jugendlichen Leichtsinn habe ich mir dafür folgendes ausgedacht:
1. Auswahl der Dateien durch den Benutzer über ein RichTextLite-Feld
2. Beim Speichern des Dokuments werden dann die Dateien in ein RT-Feld kopiert, das wiederum in einem zugriffsgeschützten Abschnitt liegt.
3. Entfernen der Dateien aus dem RichTextLite-Feld.
Alles sieht eigentlich ganz gut aus. Zumindest so lange, bis ich die Dateien öffnen möchte. Dann bekomme ich nämlich die Fehlermeldung, dass das Element des Dokuments nicht gefunden wurde.
Nach der Suche hier im Forum wurde mir dann auch klar, dass ich nur die Verweise auf die Dateien kopiert habe und die eigentlichen Dateien mit dem Leeren des RT-Lite-Feldes gelöscht werden:
http://atnotes.de/index.php/topic,43712.0.html
Jetzt stecke ich fest und hoffe, dass mir hier im Forum sagen kann, wie ich das elegant lösen kann. Ein Abspeichern der Dateien im File-System möcht ich aber verhindern.
Hier mein Code:
--- Code: ---Sub speichern
Dim w As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Dim rtitemA As Variant
Dim rtitemB As Variant
Set uidoc = w.CurrentDocument
Set doc = uidoc.Document
'Mit Setzen des folgenden Feldes mache ich den zugriffsgeschützten Abschnitt
bearbeitbar:
Call uidoc.FieldSetText("BearbAnhaenge","1")
Call uidoc.Save
If doc.HasItem("Anhang") Then
Set rtitemA = doc.GetFirstItem( "Anhang" )
Else
Set rtitemA =New NotesRichTextItem(doc, "Anhang")
End If
Set rtitemB = doc.GetFirstItem( "AnhangTransfer" )
Call rtitemA.AddNewLine(1)
Call rtitemA.appendRTItem(rtitemB)
Call doc.RemoveItem("rtitemB")
Call uidoc.FieldClear("AnhangTransfer")
Call doc.Save(False, True)
'Der Abschnitt wird wieder dicht gemacht:
Call uidoc.FieldSetText("BearbAnhaenge","0")
Call uidoc.Save
End Sub
--- Ende Code ---
Vielen Dank fürs Anschauen
Markus
Axel:
Nur mal so ein Schuß ins Blaue. Steuer doch den Zugriff auf den Abschnitt in Abhängigkeit des Auftragsstatus.
Axel
Peter Klett:
Entweder Du versuchst es so, wie Axel angeregt hat, oder Du wirst die Dateien temporär auf die Platte schreiben und neu an die Richtextfelder anhängen müssen. Löschen am Ende nicht vergessen.
bikerboy:
Ich würde Axels Variante empfehlen.
Das mit dem verschieben ist leider nicht so leicht wie es sein sollte und wenn du Sache auf die Platte schreibst musst du dies auch erstmal dürfen, genauso wie das löschen. Lieber mit dem Bereich arbeiten, dann musst du dir um so was keine Gedanken machen.
ampfi:
Hallo zusammen,
habe es jetzt doch über den Zwischenschritt des Abspeicherns gemacht. Eine Zugriffssteuerung in Abhängigkeit des Status hätte bereits angehängte Dateien änderbar gemacht.
Vielen Dank für Eure Hilfe
Markus
Navigation
[0] Themen-Index
Zur normalen Ansicht wechseln