Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: DAU-in am 28.10.10 - 18:07:30

Titel: Problem mit SaveOptions
Beitrag von: DAU-in am 28.10.10 - 18:07:30
Ich werde hier langsam kirre.

ich möchte folgendes:
die Anwender  bearbeiten ein Dokument und sollen bestimmte Items via Button im Backend ändern können.
Feolgendes soll passieren, wenn die Aktion ausgelöst wird:

- Hinweis, dass das Dokument gespeichert wird

- der Anwender wählt via Picklist etwas aus
- die Werte werden umgeschossen
- das Backenddokument wird gespeichert
- SaveOptions wird auf 0 gesetzt
- das Frontenddokument wird geschlossen
- das Backenddokument wird via UniversalUNID angezogen und als Frontenddokument geöffnet


Folgendes passiert mir:
1. Das SaveOptions Item wird mit 0 abgespeichert (Fehler wurde von der Chefin entdeckt)
2. Danach habe ich im Backend das SaveOptions entfernt:
Jetzt werde ich im neugeöffenten Dokument gefragt, ob ich speichern will. Während der Abfrage ist ein weiteres Fenster mit dem Dokument geöffnet.

Wie bekomme ich das hingebogen? Oder habe ich einen Fehler im Code?

Folgendes habe ich noch gefunden:
noch einer, der rätselt:
http://www-10.lotus.com/ldd/nd85forum.nsf/5f27803bba85d8e285256bf10054620d/bce9c41f1e1512398525779f004b44e8?OpenDocument&Highlight=0,uidoc.close

das wusste ich auch noch nicht bzw. hat mir bisher kein Bein gestellt:
http://www-10.lotus.com/ldd/bpmpblog.nsf/dx/queryclose-annoyances?opendocument&comments#anc1

Die Version ist:
Release 8.5.2
Revision 20100811.1131 (Release 8.5.2)
Standardkonfiguration

und hier der Code:


Sub Click(Source As Button)
   Dim ws As New NotesUIWorkspace
   Dim session As New notessession
   Dim uidoc As NotesUIDocument
   Dim doc As NotesDocument
   Dim flag As Integer
   Dim strUNID As String
   Dim docReopen As NotesDocument
   
   
   Set uidoc = ws.CurrentDocument
   Set doc = uidoc.Document
   
   
   flag = Messagebox ("blabla ----Möchten Sie fortfahren?",4, "Hinweis")
   
   If flag = 6 Then
      Call uidoc.save
   ' Setzen der Eigenschaften, hier bekommen die Anwender noch ein Picklist zur auswahl
      'diverse Felder setzen
      Call doc.save(False,False)
      
      strUNID = doc.UniversalID
      uidoc.document.SaveOptions ="0"  'keine Speicherabfrage
      Call uidoc.Close
      
      Set docReopen = session.currentDatabase.GetDocumentByUNID(strUNID)
      
      '------------------------------------------------------------
      ' da im docReopen nun immer das SaveOptions entfernt werden muss
      If docReopen.HasItem("SaveOptions") Then
         Call docReopen.RemoveItem("SaveOptions")
         Call docReopen.Save(False, False)
         
      End If
          '------------------------------------------------------------
      
      Call ws.EditDocument(False,docReopen)
      ws.CurrentDocument.EditMode = True
      
   End If
   
End Sub



Titel: Re: Problem mit SaveOptions
Beitrag von: Werner Götz am 28.10.10 - 20:21:42
Nach dem
Code
Call uidoc.Close 
ist ein
Code
Delete doc
nötig, sonst greift Notes in der Zeile
Code
Set docReopen = session.currentDatabase.GetDocumentByUNID(strUNID)

auf das sich bereits im Hauptspeicher befindende doc zurück.

Viele Grüße
-Werner
Titel: Re: Problem mit SaveOptions
Beitrag von: DAU-in am 28.10.10 - 21:45:08
Danke ich probiers morgen.
Titel: Re: Problem mit SaveOptions
Beitrag von: pram am 29.10.10 - 00:13:13
Anstatt

Set docReopen = session.currentDatabase.GetDocumentByUNID(strUNID)
Call ws.EditDocument(False,docReopen)

kann man auch

Set docReopen = ws.EditDocument(False,docReopen).document

schreiben, dann braucht man kein delete
Titel: Re: Problem mit SaveOptions
Beitrag von: Werner Götz am 29.10.10 - 13:33:26
Was hat denn diese Schreibweise mit dem Delete zu tun, welches nach dem uidoc.Close aufzurufen ist? Und woher kommt dann das docReopen?
Titel: Re: Problem mit SaveOptions
Beitrag von: DAU-in am 29.10.10 - 17:06:31
Hallo,

mit dem delete doc funktionierts jetzt wunderbar.

Aber ich bilde mir ein, das früher nicht gebraucht zu haben.

Grüsse

Dau-in

Titel: Re: Problem mit SaveOptions
Beitrag von: pram am 29.10.10 - 20:47:00
ws.editDocument hat ja als Rückgabewert das NEUE UI-Doc
und wenn auf diesem UI-Doc auf die document-property zugreift, bekommt man das neue Backenddokument,

Im Prinzip funktioniert es zwar auch, in dem man sich das Doc von der DB holt, allerdings ist das backend-Doc dann u.U. nicht mit dem UI-Doc "verdrahtet", d.h. Feldänderungen wirken sich nicht im UI aus.

Sauberer find ich einen Reopen jedenfalls so:

Code
set uiDoc = ws.currentDocument ' aktuell offenes Doc
set doc = uiDoc.document ' aktuelles BE-Doc
... do something
set oldUiDoc = uiDoc
set uiDoc = ws.editDocument(true, oldUiDoc.document)
call oldUiDoc.document.saveOptions = "0"
call oldUiDoc.close()

set doc = uiDoc.document ' aktuelles BE-Doc
... do something


Gruß
Roland

Titel: Re: Problem mit SaveOptions
Beitrag von: Peter Klett am 29.10.10 - 21:03:24
Aber ich bilde mir ein, das früher nicht gebraucht zu haben.
Doch

Kann mich erinnern, sowas schon mit Notes 4 gemacht zu haben. Hätte ich es nicht gebraucht, wäre ich nicht drauf gekommen.