Domino 9 und frühere Versionen > ND6: Entwicklung

Datenübertragung zwischen Dokumenten

(1/3) > >>

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