Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: forrest g am 04.02.03 - 15:34:36
-
hallo zusammen,
ich habe folgendes problem in einer scriptlibrary:
- in meiner datenbank habe ich die eigenschaft gewählt: allow soft deletions(in deutsch heisst das glaube ich wiederherstellbare löschungen erlauben)
- in meinem script möchte ich ein dokument wiederherstellbar -also nicht endgültig- löschen
- in der formelsprache geht das mit @deletedocument
- das habe ich über evaluate(wie in der hilfe gefunden) folgendermassen eingebunden:
eval = session.evaluate( "@deletedocument", doc )
ich kann diese formel nicht speichern, fehlermeldung "not a member"!
was mache ich falsch?
oder gibt es einen anderen besseren lösungsansatz?
vielen dank im voraus
-
... da müsste man schon den ganzen code sehen (zb. dim, set) ;D
eine zeile reicht nicht
-
hallo klaus,
wie du möchtest...
habe die messageboxen für dir fehler mal aus dem code rausgenommen.
vielen dank für die hilfe
Function funcAktionLoeschenView( doc As notesdocument )
On Error Goto Fehler
'DEKLARATION DER NOTESOBJEKTE
'Frontend
Dim ws As New notesuiworkspace
'Backend
Dim session As New notessession
Dim db As notesdatabase
Dim col As notesdocumentcollection
'VARIABLEN
Dim Form As String
Dim Unid As String
Dim Status As String
Dim AntwortLoeschStatus As Variant
Dim FehlerXDocs As String
Dim Fehler0Doc As String
Dim DocGelöscht As String
'ZUWEISUNG DES NOTES-ENVIRONMENT
Set db = session.currentdatabase
Set col = session.currentdatabase.UnprocessedDocuments
If col.count = 0 Then
Msgbox Fehler0Doc
Print Fehler0Doc
Exit Function
End If
If col.count = 1 Then
Set doc = col.GetFirstDocument
Form = doc.Form(0)
Unid = doc.UniversalID
If ( Form = "fHilfsdokument" ) Then
'Funktionsaufruf zur Löschung der Antwortdokumente, wenn das aktuelle Dokument ein Hauptdokument ist
Set AntwortLoeschStatus = funcVererbenLoeschen( doc )
End If
If ( (Form = "fHilfsdokument" And AntwortLoeschStatus = "1") Or _
(Form = "fHilfsdocAntwort" Or Form = "fRückantwort") ) Then
If Not ( doc.GLBesonders(0) <> "1" ) Then
doc.GLLöschDatum = Left( Cstr(Now), 16 )
doc.GLKiller = session.commonusername
Set doc = funcVererbenHistorie( doc, Status )
If doc Is Nothing Then
Goto Fehler
End If
'Aktuelles Dokument löschen
Dim eval As Variant
eval = session.evaluate( "@deletedocument", doc )
If ( eval ) Then
Msgbox DocGelöscht
End If
End If
End If
Else
Msgbox FehlerXDocs
Print FehlerXDocs
Exit Function
End If 'ANZAHL GEWAEHLTER DOKUMENTE
Goto Ende
Fehler:
'FEHLERBEHANDLUNG: die Fehlerbehandlung in einer eigenen Library"Errorhandling" wird aufgerufen
Call funcFehler
Ende:
'BEENDEN DER SUB
End Function
-
... das war's dann wohl
@DeleteDocument
Verwendung:
Diese Funktion ist nur für die Verwendung in Formeln vorgesehen, die von Agenten ausgeführt werden; sie hat an anderer Stelle keine Wirkung.
(ein kleiner auszug aus der designer-hilfe)
;)
-
jo, danke
also entweder im agenten oder...
weiss noch jemand eine andere lösuntg?
vielen dank an klaus
-
Wie wär´s damit ?
' Call Doc.Remove(True)
Ciao
Don Pasquale
-
hi don pasquale,
das wäre sicherlich eine möglichkeit.
nur löscht die remove-methode das dokument permanent aus der db un das möchte ich in diesem fall nicht.
ich möchte hier eine wiederherstellbare löschung.
ich weiss auch schon wie, wenn das jemanden interessiert:
ich versehe beim "löschen" die dokumente mit einem löschflag="1".
der viewselect für alle ansichten enthält dann löschflag!="1" und die dokumente fallen aus diesen ansichten.
dann gibt es einen periodischen agenten, der alle dokumente mit löschflag="1" löscht.
hat jemand eine bessere idee?
ich teste das jetzt mal und hoffe, dass ich dann den daumen nach oben setzen kann...
-
Hi forrest g,
ich hab's in meinen Datenbanken genauso geregelt wie du, mit Löschflag usw.
Ich habe aber dahingehend erweitert, dass ich eine Ansicht "Papierkorb" erstellt habe, in der nur die gelöschten Dokumente angezeigt werden. Darin gibt es eine Aktion, die ein Wiederherstellen erlaubt und eine Aktion fürs entgültige Löschen (nur sichtbar für Admin).
So ist es für jeden User möglich, bis der Admin entgültig löscht, ein Dokument wiederherzustellen. Kommt bei unseren User recht gut an.
Axel
-
hi axel,
prima, dann scheint das ja der richtige ansatz zu sein.
neben den "normalen" ansichten habe ich wie du noch 2 weitere ansichten erstellt:
eine für den admin mit harddelete und wiederherstellen.
die andere mit select auf den löschflag, in welcher sich alle vermeintlich gelöschten dokumente(mit löschflag= "1") befinden, bevor der periodische agent läuft
vielen dank für deine antwort
-
sorry,
habe vergessen das auf erledigt zu setzen, läuft.
@axel,
die idee mit dem papierkorb ist prima, hab die mal übernommen
danke