Domino 9 und frühere Versionen > ND7: Entwicklung

Maske mit Feldinhalten aus Anwortdokumenten füllen

(1/2) > >>

giochips:
Hallo Leute,
bin mal wieder auf eure Hilfe angewiesen.

Ich hab eine Datenbank mit Hauptdokumenten (Name, Kd-Nr, Anschrift von Kunden). Zu jedem Hauptdokument gibt es Antwortdoks mit Informationen über Buchungen zu diesen Kunden. (Z.B. enthält ein Antwortdok die Felder Buchungstag, Verwendungszwecke, Konto Empfänger...) Jeder Kunde kann unterschiedlich viele Antwortdoks haben.

Nun soll ein Anschreiben an die Kunden erfolgen, in welchem diese Buchungsinformationen mitgeteilt werden. Das Anschreiben hab ich als Maske gestaltet. Im Postopen-Ereignis der Maske holt mir ein Script die Informationen aus den jeweiligen Antwortdoks und schreibt diese Inhalte in Felder des aktuellen Doks. Die Felder in der Maske bleiben leer. Wenn ich mir in den Eigenschaften des Doks diese Felder anschauen, dann sind die Felder aber richtig gefüllt. Dann, sobald ich das Dok in den Bearbeitenmodus versetze sind die Felder in den Eigenschaften des Doks aber auch wieder leer!!??

Lasse ich das gleiche Script im Ereignis QueryModeChance laufen, dann funktionierts. Die Feldinhalte werden in der Maske dargestellt. (Natürlich erst wenn ich das Dok bearbeite) Warum funzt das aber nicht im Postopen??

Hier noch mein Script:
   
   Dim uiws As New NotesUIWorkspace
   Dim uidoc As NotesuiDocument
   Dim doc As NotesDocument
   Dim responsedoc As NotesDocument   
   Dim responsecol As NotesDocumentCollection
   Set uidoc=uiws.currentDocument
   Set doc=uidoc.Document
   Set responsecol=doc.Responses
   
   Dim Feldzahl As Integer
   Dim Buchungstag As String, BLZ As String, Kto As String, VWZ As String
   Feldzahl=1
   
   Set responsedoc=responsecol.GetFirstDocument
   Do Until responsedoc Is Nothing
      Buchungstag="TmpBuchungstag"&Feldzahl
      BLZ="TmpEmpfängerBLZ"&Feldzahl
      Kto="TmpEmpfängerKto"&Feldzahl
      VWZ="TmpVWZ"&Feldzahl
      Call doc.ReplaceItemValue(Buchungstag, responsedoc.Buchungstag)
      Call doc.ReplaceItemValue(BLZ, responsedoc.BLZEmpfänger)
      Call doc.ReplaceItemValue(Kto, responsedoc.KontoEmpfänger)
      Call doc.ReplaceItemValue(VWZ, responsedoc.Verwendungszweck)
      Call doc.Save(True, True)
      Set responsedoc=responsecol.GetNextDocument(responsedoc)
      Feldzahl=Feldzahl+1      
   Loop
   Call doc.Save(True, True)
   
End Sub

Vielen Dank für Eure Hilfe!!
Marco

m3:
Call notesUIDocument.Reload( ) bzw. Call notesUIDocument.Refresh( )

Wenn Du was im Backend-Dokument änderst, muss Du das dem UIDoc mitteilen.

koehlerbv:
Es fehlt auch ein noch ein
If Source.EditMode = False Then
   Exit Sub
End If

Bernhard

giochips:

--- Zitat von: m3 am 21.08.08 - 11:20:42 ---Call notesUIDocument.Reload( ) bzw. Call notesUIDocument.Refresh( )

Wenn Du was im Backend-Dokument änderst, muss Du das dem UIDoc mitteilen.

--- Ende Zitat ---

Also lt. meiner Literatur brauch man sich bei Änderungen im Backend nicht um die Aktualisierung des Frontends kümmern. Man kann das aber über die Eigenschaft autoreload=false abschalten und dann mit notesUIDocument.Reload() manuel ausführen.

Hab im meinem Script nach den Doc.Save den Reload ausgeführt und erhalte folgende FM:
Dokumentbefehl ist nicht verfügbar

@koehlerbv:
Willst du damit sagen, das Dokument muß im Bearbeitenmodus sein? Weil wenn ich das richtig verstehe, führt dein Codeschnippsel zum Verlassen des Scripts, wenn dies nicht so ist!? oder?

Danke!
Marco

koehlerbv:
NotesUIDocument.Refresh oder .Repload oder ein NotesUIWorkspace.ViewRefresh (=F9) sind nur im EditMode zulässig.

Bernhard

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln