Domino 9 und frühere Versionen > ND8: Entwicklung
Haupt- und Antwortdokumente
BMT216A:
Hi,
irgendwie sitz ich wohl grad auf der Leitung.
Hier ist mein Code, mit dem ich die Antwort auf die Antwort erstelle, also nicht das was ich will.
Habe jetzt schon geraume Zeit damit verbracht es zu ändern, aber es klappt nicht.
Wäre einer von Euch so freundlich mir die Zeilen so anzupassen, dass es klappt.
Vielen Dank
Sub ErstelleAntwort
Const FORMNAME_RESPONSE$ = "TOP"
Const ERR_NODOCSEL_TITLE$ = "Fehler: Es ist kein Hauptdokument gewählt!"
Const ERR_NODOCSEL_MSG$ = "Es muss ein Dokument gewählt sein um eine Antwort erstellen zu können."
Dim uiws As New NotesUIWorkspace
Dim uidocNew As NotesUIDocument
Dim session As New NotesSession
Dim db As NotesDatabase
Dim docSel As NotesDocument
Dim docNew As NotesDocument
'Aktuelle Datenbank
Set db = session.CurrentDatabase
'Aktuelles Dokument als NotesDocument
If Not uiws.CurrentDocument Is Nothing Then
'Dokument mit Maske geöffnet
Set docSel = uiws.CurrentDocument.Document
'Dokument in Ansicht selektiert
Elseif Not session.DocumentContext Is Nothing Then
Set docSel = session.DocumentContext
End If
'User hat kein Dokument ausgewählt um eine Antwort ersetllen zu können
If docSel Is Nothing Then
Msgbox ERR_NODOCSEL_MSG, 48, ERR_NODOCSEL_TITLE
Exit Sub
End If
'Neues Backend Antwortdokument erstellen
Set docNew = db.CreateDocument
Call docNew.ReplaceItemValue("Form", FORMNAME_RESPONSE)
Call docNew.MakeResponse(docSel)
'Neues Dokument im Frontend öffnen
Call uiws.EditDocument(True, docNew)
End Sub
Axel:
Der Code sieht auf den ersten Blick eigentllich ganz ok aus. Das einzigste was mich auf Anhieb etwas stört ist das hier:
Call docNew.ReplaceItemValue("Form", FORMNAME_RESPONSE)
Versuch's mal so:
...
'Neues Backend Antwortdokument erstellen
Set docNew = db.CreateDocument
Call docNew.Form = FORMNAME_RESPONSE$
Call docNew.ComputeWithForm(True, False)
Call docNew.MakeResponse(docSel)
'Neues Dokument im Frontend öffnen
Call uiws.EditDocument(True, docNew)
...
Beschreib' mal genauer was nicht funktioniert. Was sagt der Debugger zu dem Thema?
Axel
DAU-in:
Wenn ich das als Dau-in richtig sehe, machst du das von einem Antwortdokument aus, richtig?
Dann ist docSel bereits ein Antwortdokument, und wenn du an dieses ein neues Antwortdokument hängst, ist das dann richtigerweise ein Antwort-zu-Antwortdokument.
Du musst von docSel im Backend auf das Hauptdokument zugreifen (siehe 1. Beitrag Axel, danach 2. Beitrag Lloyd).
Dann trägst du im Abschnitt Antwortdokument erstellen dort, wo bisher docSel eingetragen ist, das Hauptdokument ein.
Dann sollte das funktionieren.
BMT216A:
Hallo Notesler(innen),
wie in meinem ersten Post geschrieben, manchmal sieht man den Wald vor lauter Bäumen nicht. Die Lösung war so einfach, wie von Axel und Lloyd geschrieben.
Ich hab es jetzt so gelöst.
Hier noch der Code.
Sub Erstelle_x_Antwort
'******************************************************************************
'Erstelle_x_Antwort
'hiemit sollen n Antworten aus einem Antwortdokument auf ein
'Haupdokument erstellt werden.
'Versionskontrolle:
'V1.00 Erstellt 09.08.2010 xxx
'******************************************************************************
'Deklaration der Variablen, die nur hier genutzt werden,
'alle anderen sind in der Scriptbibliothek unter (Declarations) zu finden
Dim Hauptdokument As NotesDocument
Dim Antwortdokument As NotesDocument
Set ws = New NotesUIWorkspace
Set session = New NotesSession
Set uidoc = ws.CurrentDocument
Set doc = uidoc.Document
Set db = session.CurrentDatabase
'allseits bekannt
cr = Chr(10) & Chr(13)
'Dem Hauptdokument eintrichtern, dass es genau das Hauptdokument über doc.ParentDocumentUNID ist
Set Hauptdokument = db.GetDocumentByUNID(doc.ParentDocumentUNID)
'Neues Backend Antwortdokument zum aktuellen Dokument erstellen
Set Antwortdokument = db.CreateDocument
Call Antwortdokument.ReplaceItemValue("Form", "TOP")
Call Antwortdokument.MakeResponse(Hauptdokument)
'Neues Dokument (hier Antwort auf Haupdokument) im Frontend öffnen
Call ws.EditDocument(True, Antwortdokument)
'Alles in der Welt endet durch Zufall und Ermüdung.
'Heinrich Heine
End Sub
DerAndre:
Und man kann sich im Best Practices nochmal sehr eingehend mit dem Thema beschäftigen.
Navigation
[0] Themen-Index
[*] Vorherige Sete
Zur normalen Ansicht wechseln