Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: TomLudwig am 26.11.03 - 15:57:36

Titel: Dokument löschen ohne Abfrage
Beitrag von: TomLudwig am 26.11.03 - 15:57:36
Hallo,
ich habe in meinem Dokument einen Button Dokument löschen
Hinter diesem Button liegt die Formel:

@Command([EditClear]);
@Command([FileCloseWindow])

Dadurch wird aber nur die Löschmarkierung gesetzt. Und erscheint auch immernoch die Abfrage ob ich das Dokument wirklich löschen möchte.

Wie kann ich es bewerkstelligen, dass Das Dokument wirklich komplett nach dem Druck auf den Butten gelöscht wird?
Titel: Re:Dokument löschen ohne Abfrage
Beitrag von: Driri am 26.11.03 - 16:04:57
Hi,

über Formelsprache wäre mir da nichts bekannt, über Script würds funktionieren.

Call doc.Remove(True)
Titel: Re:Dokument löschen ohne Abfrage
Beitrag von: Gandhi am 26.11.03 - 16:07:43
@DeleteDocument
Titel: Re:Dokument löschen ohne Abfrage
Beitrag von: koehlerbv am 26.11.03 - 16:12:46
Zitat
Diese Funktion ist nur für die Verwendung in Formeln vorgesehen, die von Agenten ausgeführt werden; sie hat an anderer Stelle keine Wirkung.
Titel: Re:Dokument löschen ohne Abfrage
Beitrag von: Driri am 26.11.03 - 16:12:59
Hi,

zu @DeleteDocument :

Diese Funktion ist nur für die Verwendung in Formeln vorgesehen, die von Agenten ausgeführt werden; sie hat an anderer Stelle keine Wirkung.

Quelle : Designer Hilfe
Titel: Re:Dokument löschen ohne Abfrage
Beitrag von: koehlerbv am 26.11.03 - 16:15:40
Siehe oben ;-)
Titel: Re:Dokument löschen ohne Abfrage
Beitrag von: TomLudwig am 26.11.03 - 16:16:14
@DeleteDocument funktioniert nicht über Buttons....

Call doc.Remove(True) funktioniert nur wenn ich das Dokument nicht gerade geöffnte habe.

Ich suche eine Rutine wie ich ein geöffnetes Dokument gleich lösche....

Hilfe...
Titel: Re:Dokument löschen ohne Abfrage
Beitrag von: koehlerbv am 26.11.03 - 16:18:07
Warum sollte NotesDocument.Remove nicht funktionieren ? Das putzt das Dokument im Backend weg.
Ein NotesUIDocument.Close und ein Refresh der View wäre dann auch noch angebracht, damit man die Resultate gleich sieht (bzw. nicht mehr sieht).

Bernhard
Titel: Re:Dokument löschen ohne Abfrage
Beitrag von: TomLudwig am 26.11.03 - 16:22:30
Bei Call doc.Remove(True) bekomme ich die Fehlermeldung:

Cannot Remove NotesDocument when instantiated by NotesUIDocument
Titel: Re:Dokument löschen ohne Abfrage
Beitrag von: koehlerbv am 26.11.03 - 16:25:50
Ach ja ... Sorry für meinen Schnellschuss. Du brauchst meine Tips aber nur eine andere Reihenfolge bringen:
NotesDocument instantiieren
UIDoc zuwerfen
NotesDocument löschen

So aus dem hohlen Bauch: Sollte funktionieren.

HTH,
Bernhard
Titel: Re:Dokument löschen ohne Abfrage
Beitrag von: TomLudwig am 26.11.03 - 16:28:54
Nochmal langsam bitte....

NoteDocument holen
NotesUIDocument zuwerfen ??? Wie bitte ?
NotesDocument löschen
Titel: Re:Dokument löschen ohne Abfrage
Beitrag von: koehlerbv am 26.11.03 - 16:38:28
Call NotesUIDocument.Close
Call NotesDocument.Remove (True)
Call NotesUIWorkspace.ViewRefresh

Das Ganze sollte dann in einem Agent stehen (Schnellschuss ! Sitze hier über 'nem ganz anderen Problem ;-), da ja mit "zugeworfenem" UIDoc auch der Code im Buhtong beendet wird.

HTH,
Bernhard
Titel: Re:Dokument löschen ohne Abfrage
Beitrag von: TomLudwig am 26.11.03 - 17:01:24
Immernoch die selbe Fehlermeldung bei diesem Quellcode...

Sub Click(Source As Button)
   Dim uiwork As New NotesUiWorkspace
   Dim uidoc As NotesUIDocument
   Dim doc As NotesDocument
   
   Set uidoc = uiwork.Currentdocument
   Set doc = uidoc.Document
   
   Call uidoc.Close(True)
   Call doc.Remove (True)
   Call uiwork.ViewRefresh
   
End Sub

Bitte helft mir....
Titel: Re:Dokument löschen ohne Abfrage
Beitrag von: eknori am 26.11.03 - 17:06:15
guckst du:

http://www.eknori.de/cms/tipps/detail.php?nr=85&kategorie=tipps
Titel: Re:Dokument löschen ohne Abfrage
Beitrag von: koehlerbv am 26.11.03 - 17:10:53
Ulrich, das soll aber aus einem geöffneten Dokument per Button heraus erfolgen ...

Tom: Ich hoffe, ich finde heuet Abend 'nen freien Moment, um mir das mal genauer anzuschauen. Sorry für meine "wenig werthaltigen" Tips ...

Bernhard
Titel: Re:Dokument löschen ohne Abfrage
Beitrag von: eknori am 26.11.03 - 17:36:39
die Lösung dürfte dann so etwas wie das hier sein

http://www-10.lotus.com/ldd/46dom.nsf/55c38d716d632d9b8525689b005ba1c0/9a57fb7ad1a4c7b18525692e00815a0b?OpenDocument (http://www-10.lotus.com/ldd/46dom.nsf/55c38d716d632d9b8525689b005ba1c0/9a57fb7ad1a4c7b18525692e00815a0b?OpenDocument)

In deinem "Löschen" Knopf müsstest du dann ein Feld im betreffenden Document setzen und das Doc schließen. Dann vor der Ausführung des o.a. Code das Feld abgefragt. Wenn gesetzt wir der Code ausgeführt, wenn nicht, dann nicht.

Solange das UIDoc instantiiert ist, hast du keine Chance, das Doc zu löschen.

dazu
http://www-10.lotus.com/ldd/46dom.nsf/55c38d716d632d9b8525689b005ba1c0/ee1148542057a36b85256b1b004e319e?OpenDocument (http://www-10.lotus.com/ldd/46dom.nsf/55c38d716d632d9b8525689b005ba1c0/ee1148542057a36b85256b1b004e319e?OpenDocument)
Titel: Re:Dokument löschen ohne Abfrage
Beitrag von: TomLudwig am 27.11.03 - 11:26:33
Also erst mal danke für eure Bemühungen.
Weils wahrscheinlich jeder gut gebrauchen kann. Fasse ichs nochmal zusammen in einem Beispiel ums den anderen leichter zu machen....

Im der Maske muss es ein Feld "flgDelete" mit dem Vorgabewert "0" geben.

Im Button ist folgende Funktion hinterlegt:

Sub Click(Source As Button)
   Dim uiwork As New NotesUiWorkspace
   Dim uidoc As NotesUIDocument
   Dim doc As NotesDocument
   
   Set uidoc = uiwork.Currentdocument
   uidoc.EditMode = True
   Call uidoc.Fieldsettext("flgDelete", "1")
   Call uidoc.Save
   Call uidoc.Close(True)
End Sub

Im Queryclose der Maske muss das Feld überprüft werden und das Dokument gelöscht werden:

Sub Queryclose(Source As Notesuidocument, Continue As Variant)
   If source.FieldContains("Dozent_Delete","1") Then
      noteid$ = source.document.NoteID
      Delete source                      
      Dim S As New notessession
      Dim db As notesdatabase
      Set db = s. currentdatabase
      Dim doc As Notesdocument
      Set doc = db.GetDocumentbyID(noteid$)
      Call doc.Remove(True)   
   End If
End Sub