Autor Thema: Backend - Frontend  (Gelesen 3667 mal)

Offline buzi

  • Aktives Mitglied
  • ***
  • Beiträge: 171
Backend - Frontend
« am: 24.07.13 - 10:22:17 »
Hallo zusammen,

ich verzweifle seit ein paar Tagen an folgendem Problem:

In ein geöffnetes Dokument soll ein DocLink eingefügt werden als RichTextItem. Ich gehe wie folgt vor: Zuerst das Ui-Document speichern und schließen.

   docUnid = uiws.Currentdocument.Document.Universalid
uiws.CurrentDocument.Save
   uiws.CurrentDocument.Close

Dann wird das Backend-Document geladen und das RichTextItem mit dem DocLink hinzugefügt.

   Set backendDoc = db.GetDocumentByUnid(noteUnid)
   Set rtitem = backendDoc.GetFirstItem(rtItemName)
      backendDoc.RemoveItem(rtItemName)   
   Set rtitem = New NotesRichTextItem(backendDoc, rtItemName)
   Call rtitem.AppendDocLink(partnerDoc, "Partner in Bios")


Anschließend das Backend-Doc gespeichert und das Ui-Doc neu geöffnet

   Call backendDoc.Save(True, True)
   backendDoc.saveoptions = "0"
   
   Set newuidoc = ws.editdocument(True, backendDoc, False)
   Call newuidoc.GotoField(rtItemName)


Funktioniert alles wunderbar - bis auf die Tatsache, dass alle Änderungen die ich anschließend im geöffneten Dokument durchführe nicht gespeichert werden. Lase ich die letzten zwei Code-Zeilen weg, also das Dokument geschlossen, und öffne ich das Dokument manuell aus der DB, verhält sich alles wie gewünscht. Ich möchte dem User aber natürlich den Schritt ersparen das Dokument wieder von Hand öffnen zu müssen!!

Was mache ich falsch?
« Letzte Änderung: 24.07.13 - 10:24:01 von buzi »

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Backend - Frontend
« Antwort #1 am: 24.07.13 - 10:25:45 »
Hallo,

Wahrscheinlich ist das Feld "SaveOptions" dann immer noch auf "0" gesetzt.

Wenn Du das Dokument 'normal' oeffnest, wird irgenwo dieses Feld geleert oder geloescht?


Andreas

Offline buzi

  • Aktives Mitglied
  • ***
  • Beiträge: 171
Re: Backend - Frontend
« Antwort #2 am: 24.07.13 - 10:48:50 »
Wie kann ich das überprüfen? Wenn ich die SaveOptions Zeile weg lasse bekomme ich ne ganz tolle Felermeldung: "Eine weitere Kopie dieses Dokuments wurde gespeichert während Sie das Dokument bearbeiteten. Sollen Ihre Änderungen auch als Konfliktdokument gespeichert werden?"

Glombi

  • Gast
Re: Backend - Frontend
« Antwort #3 am: 24.07.13 - 10:52:58 »
Du musst warten, bis die Rich Text Operation abgeschlossen ist. Das macht Notes dann mal irgendwann...
Um es zu erzwingen, gibt es die Methode Update.

Auszug aus der Designer Hilfe:
Call notesRichTextItem.Update
Usage
Operations on a rich text item are queued for efficiency. The order and time of completion are not predictable. Use this method to ensure that processing is complete at a certain point.
This method is useful when interacting with the front-end classes.


Also folgendes:
Call rtitem.AppendDocLink(partnerDoc, "Partner in Bios")
Call rtitem.Update
Call backendDoc.Save(True, True)

'Das SaveOptions nicht setzen!

Set newuidoc = ws.editdocument(True, backendDoc, False)
Call newuidoc.GotoField(rtItemName)


Andreas

Offline buzi

  • Aktives Mitglied
  • ***
  • Beiträge: 171
Re: Backend - Frontend
« Antwort #4 am: 24.07.13 - 11:05:10 »
Klingt gut aber läuft immernoch in diese Fehlermeldung mit Konfliktdokument ohne die SaveOptions

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Backend - Frontend
« Antwort #5 am: 24.07.13 - 12:04:37 »
Probier mal nach dem

uiws.CurrentDocument.Close

ein

Delete uiws.CurrentDocument

vielleicht hilft das

Offline buzi

  • Aktives Mitglied
  • ***
  • Beiträge: 171
Re: Backend - Frontend
« Antwort #6 am: 25.07.13 - 10:18:58 »

Hallo Peter,

den Aufruf so wie du ihn geschrieben hast

Delete uiws.CurrentDocument

meckert der Complier an "Delete not valid on: CurrentDocument".
Schreibe ich

uiws.CurrentDocument.DeleteDocument

kommt zur Laufzeit die Meldung "Dokumentenbefehl ist nicht verfügbar".

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Backend - Frontend
« Antwort #7 am: 25.07.13 - 10:31:19 »
den Aufruf so wie du ihn geschrieben hast

Delete uiws.CurrentDocument

meckert der Complier an "Delete not valid on: CurrentDocument".

Habe mir sowas fast gedacht

Schreibe ich

uiws.CurrentDocument.DeleteDocument

kommt zur Laufzeit die Meldung "Dokumentenbefehl ist nicht verfügbar".
Du sollst ja auch nicht das Dokument löschen, sondern nur den Speicher.

Ich finde es immer etwas ungeschickt, wenn man keine sauberen Variablen definiert und verwendet, deshalb probiere es doch anstelle von

docUnid = uiws.Currentdocument.Document.Universalid
uiws.CurrentDocument.Save
uiws.CurrentDocument.Close

mal so

Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Set uidoc = uiws.CurrentDocument
Set doc = uidoc.Document

docUnid = doc.Universalid
uidoc.Save
uidoc.Close

Delete uidoc
Delete doc

...

Offline buzi

  • Aktives Mitglied
  • ***
  • Beiträge: 171
Re: Backend - Frontend
« Antwort #8 am: 25.07.13 - 11:57:19 »
Das backend-Doc sollte ich nicht wirklich löschen oder? Der Code funktioniert zwar so aber er führt immernoch zum selben Ergebnis - Änderungen am neu geöffneten uiDoc werden nicht gespeichert.

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Backend - Frontend
« Antwort #9 am: 25.07.13 - 12:16:07 »
Das backend-Doc sollte ich nicht wirklich löschen oder?

Aus dem Arbeitsspeicher, nicht aus der Datenbank

Delete doc -> löscht ein Dokument aus dem Arbeitspeicher

Call doc.Remove (True) -> löscht ein Dokument aus der Datenbank

steht auch alles in der Hilfe ...

Änderungen am neu geöffneten uiDoc werden nicht gespeichert.

Hast Du den Hinweis mit den SaveOptions, der früher in dieser Diskussion angebracht wurde, beachtet?

Offline buzi

  • Aktives Mitglied
  • ***
  • Beiträge: 171
Re: Backend - Frontend
« Antwort #10 am: 29.07.13 - 10:18:48 »
Du meinst den Hinweis "Wenn Du das Dokument 'normal' oeffnest, wird irgenwo dieses Feld geleert oder geloescht?" - ??

Ich finde die SaveOptions nicht als bearbeitbares Feld...

Offline Keydins

  • Aktives Mitglied
  • ***
  • Beiträge: 163
  • Geschlecht: Männlich
Re: Backend - Frontend
« Antwort #11 am: 29.07.13 - 10:27:29 »
Wenn das Design der Maske kein Feld 'SaveOptions' enthält, wirst du auch kein bearbeitbares Feld sehen. Heißt im Umkehrschluss aber nicht, dass das Item 'SaveOptions' nicht trotzdem vorhanden ist.

Schau dir über die Eigenschaften des Dokuments mal die Feldliste an, dort sollte 'SaveOptions' auftauchen, wenn du es in dem Dokument über deinen Scriptcode mit einem Wert versorgt hast.

Gruß
Dirk
Gruß Dirk

Aktuelle Notesumgebung
~800 BasicClients 9.0.1 FP9 SHF55
  10 FullClients 9.0.1 FP7 SHF143
    7 DominoServer 9.0.1 FP9 HF 139 / 64 Bit

Offline buzi

  • Aktives Mitglied
  • ***
  • Beiträge: 171
Re: Backend - Frontend
« Antwort #12 am: 30.07.13 - 09:19:06 »
Ok, da hatte ich schon geschaut es aber nicht gesehen.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz