Hi Leuts.
Ich hab ein kleines Script, das auf einer Datenbank innerhalb von Dokumenten Dateianlagen einfügt. Vorher löscht das Script das Feld, in dem der Anhang rein soll, dann baut es sich einen Dateinamen sammt Pfad zusammen (aus einem weiteren Feldinhalt des Dokumentes) und fügt dann, sofern dieses Zusammengestellte Dokument existiert, die Datei als Anlage in das Dokument ein und speichert es weg.
Hier das Script :
Sub Click(Source As Navigator)
Dim s As New NotesSession
Dim db As NotesDatabase
Dim v As NotesView
Dim d As NotesDocument
Const viewname = "DOCArchiv1" '-- Ansicht nach Dokumentennummer, hier musste DEINE Ansicht rein
Dim rt As notesrichtextitem
Set db = s.CurrentDatabase
Set v = db.GetView (viewname)
Set d = v.GetFirstDocument
If Not d Is Nothing Then Do
'--Anfang der Verarbeitung
If d.hasembedded = True Then '-- Wenn Anhang vorhanden
'-- Anhang entfernen
Call d.RemoveItem( "Anlage" ) '-- Zuerst das Feld weg da gleich Neuerstellung
Call d.RemoveItem( "$file" ) '-- Dann Anhang töten
End If
Datei$ = d.SachNr (0) '-- Name aus Dokument
dateiname$ = "00" & Cstr(Datei$)&".tif" '-- Zwei führende Nullen davor
ordnername$ = Left(dateiname$,6) '-- 6 Stellen des Dateinamens von links
Set xt = New notesrichtextitem (d,"Anlage") '--RT Feld neu definieren
On Error Resume Next '-- Fehler abfangen wenn keine Datei vorhanden
Call xt.embedobject (EMBED_ATTACHMENT,"","P:\tif\" & ordnername$ & "\" &dateiname$)
Call d.save (True,True)
Resume Next '-- Errorhandling, nächstes doc bei Fehler
Set d = v.GetNextDocument (d)
Loop Until d Is Nothing
End If
End Sub
Läuft auch super, ABER :
Das Script tötet erst alle Anhänge und prüft dann erst, ob eine neu einzufügende Anlage vorhanden ist. In dem Ordner, aus dem das Script die Dateien saugt liegen aber nur NEUE = AKTUELLE Dateien, nicht ALLE. Soll heißen, wenn das Script das aller erste mal mit ALLEN Dateien vollgepackt wurde, dies geschieht mit einer Kopie dieses Scriptes, das einen anderen Ordner verwendet, ist die Datenbank mit allen Datzeien gefüttert. Soweit so gut. Nun soll Natürlich nicht jedes Mal der gesammte Dateibestand gelöscht und neu eingefügt werden, sondern nur geänderte und neue Datein, die in einem anderen Ordner liegen. Aber da das Script erst löscht und dann nachschaut, ist natürlich alles weg, was vorher drin war. NUR die NEUEN Datein sind dann noch drin.
Wie kann ich erst Prüfen, ob eine Datei vorhanden ist, dann erst löschen und neu einfügen und falls keine Datei vorhanden ist, soll er natürlich nichts machen, d.h. auch nichts löschen.
Wie muss das Script verändert werden ?
Danke für jeden Tip....