Domino 9 und frühere Versionen > ND6: Entwicklung
Datenübertragung zwischen Dokumenten
Andreas Huhn:
Moin,
beim öffnen einer Maske (Child) aus einer anderen Maske (Parent) heraus werden zur Zeit ein paar der Daten im Kopf automatisch übertragen und in die Maske übernommen. Beispielsweise Projektnummer.
Bezüglich der Funktionsweise habe ich nur eine leichte Ahnung. Die Felder scheinen die gleichen Namen zu haben und tragen als Vorgabewert ebenfalls ihren Feldnamen.
Nach dem kopieren und einfügen eines solchen Dokuments unter einen anderen Parent stimmen diese Kopfdaten natürlich nicht mehr und müssten neu aus dem übergeordneten Dokument bezogen werden.
Aber wie kann ich darauf zugreifen?
Alexis:
Such doch mal unter:
"Haupt- und Antwort-Dokumente auf Basis einer Maske"
Alexis
koehlerbv:
... oder schau hier nach:
Das Arbeiten mit Haupt- und Antwort-Dokumenten
Bernhard
Andreas Huhn:
Hab mich jetzt da durch gelesen und folgende Funktion sieht interessant aus:
3.4 Felder in allen Antwortdokumenten aktualisieren, sobald sich diese im Hauptdokument ändern
--- Code: ---Sub Querysave(Source As Notesuidocument, Continue As Variant)
'------------------------------------------------------------------------------------------------------------------
'Zweck: Feldwerte werden beim Speichern in alle Antwort-Dokumente übernommen
'------------------------------------------------------------------------------------------------------------------
Dim session As New NotesSession
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Set db = session.CurrentDatabase
If Source.IsNewDoc Then Exit Sub 'Wenn UIDoc neu ist dann verlasse Script
Set doc = Source.Document 'UIDoc zu Backend-doc
'alle Antwortdocs des Backend-Docs werden in die Collection aufgenommen
Set dc = doc.Responses
'Setze alle Felder der Collection, gespeichert wird automatisch
Call dc.StampAll( "Re_Feld1" , doc.Feld1(0) )
Call dc.StampAll( "Re_Feld2" , doc.Feld2(0) )
Call dc.StampAll( "Re_Feld3" , doc.Feld3(0) )
End Sub
--- Ende Code ---
Gehört das (0) zum Feldnamen oder hat es syntaktische Bewandnis?
Wenn ich das in einer Ansicht unter PostPaste einfügen will funktioniert es nicht mehr, weil er die Objekte nicht erkennt, bzw. es nicht
Source As Notesuidocument
... sondern ...
Source As Notesuiview
heißt.
Werd jetzt mal ein bischen die DOM durschauen, aber vielleicht kann mir jemand auch noch auf die Sprünge helfen wie ich den Code anpassen muß.
Axel:
--- Zitat von: Andreas Huhn am 13.10.05 - 13:32:11 ---Gehört das (0) zum Feldnamen oder hat es syntaktische Bewandnis?
--- Ende Zitat ---
Die 0 hat eine syntaktische Bewandnis. Wenn du mit der Backendklasse NotesDocument auf ein Feld zugreifst, bekommst du immer einen Variantwert mit 1 bis x Einträgen (kann ja auch ein Mehrfachfeld sein). Mit (0) sprichst du den ersten Eintrag des Rückgabewerte an.
Schau dir mal in der Designer-Hilfe GetItemValue in der Klasse NotesDocument an.
Wenn du das in einen Ansichten-Event einfügst kann das so auch nicht funktionieren.
Ich habe den Code mal auf die Schnelle umgesetzt. Ich hoffe das funktioniert so. Ich bin mir nämlich ganz sicher, ob du mit Source.Documents die eingefügten Dokumente bekommst.
--- Code: ---Sub Postpaste(Source As Notesuiview)
Dim docCol As NotesDocumentCollection
Dim responseCol As NotesDocumentCollection
Dim doc As NotesDocument
'eingefügtes Dokument(0) in Collection aufnehmen
Set docCol = Source.Documents
Set doc = docCol.GetFirstDocument 'Auf erstes Dokument in der Collection zugreifen
While Not (doc Is Nothing)
'alle Antwortdocs des Backend-Docs werden in die Collection aufgenommen
Set dc = doc.Responses
'Setze alle Felder der Collection, gespeichert wird automatisch
Call dc.StampAll( "Re_Feld1" , doc.Feld1(0) )
Call dc.StampAll( "Re_Feld2" , doc.Feld2(0) )
Call dc.StampAll( "Re_Feld3" , doc.Feld3(0) )
Set doc = docCol.GetNextDocument(doc) 'auf nächstes Dokument zugreifen
Wend
End Sub
--- Ende Code ---
Axel
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln