Autor Thema: Antwortdokumente bearbeiten  (Gelesen 2302 mal)

Offline pimpfling

  • Senior Mitglied
  • ****
  • Beiträge: 367
  • Geschlecht: Männlich
Antwortdokumente bearbeiten
« am: 27.01.09 - 16:37:32 »
Hallo,

Meine Suche im Forum war leider erfolglos, darum nun meine Fragen:

Szenario:
Ich habe ein Hauptdokument das mehrere Antwortdokumente haben kann.
Das Hauptdokument hat eine embedded View in der die Antwortdokumente zu sehen sind.
Eins der Antwortdokumente hat einen Fleck, äh Flag gesetzt.
Es darf auch nur eins der Antwortdokumente diesen Flag gesetzt haben.

1.) Wie kann ich bei einem Antwortdokument (im FrontEnd) kontrollieren ob ein anderes (dazugehöriges Antwortdokument) das Flag gesetzt hat?

2.) Wie kann ich aus dem Hauptdokument heraus das Flag von einem Antwortdokument zu einem anderen umsetzen?

Vielen Dank
Stefan


Gruß Stefan

----------------------------------
EDV-Systeme verarbeiten, womit sie gefüttert werden. Kommt Mist rein, kommt Mist raus.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Antwortdokumente bearbeiten
« Antwort #1 am: 27.01.09 - 16:52:04 »
Mit NotesDocument.ParentDocumentUNID kommst Du vom Child an das Parent heran, von dort via Responses an alle Antwortdokumente (auf der nächsten Ebene). Damit Kannst Du dann durchgehen, wo das Flag gesetzt ist oder aus einem Child bei einem anderen das Flag entfernen.

Bernhard

Offline pimpfling

  • Senior Mitglied
  • ****
  • Beiträge: 367
  • Geschlecht: Männlich
Re: Antwortdokumente bearbeiten
« Antwort #2 am: 27.01.09 - 17:58:49 »
Hallo Bernhard, vielen Dank für die schnelle Hilfe.

Ich versuche mich erstmal mit dem Punkt 1.)
Leider bin ich nicht der grosse LS Profi. Ich habe jetzt erstmal folgenden Code in einem Button eingebaut um auf die anderen Antwortdokument (collection) zuzugreifen:

   Dim parentUnid As String
   Dim workspace As New NotesUIWorkspace   
   Dim uidoc As NotesUIDocument
   Dim db As NotesDatabase
   Dim Parent As NotesDocument   
   Dim collection As NotesDocumentCollection
   Dim currentResponse As NotesDocument
   Dim session As NotesSession
   
   Set uidoc = workspace.CurrentDocument
   Set doc = uidoc.Document
   Set session = New NotesSession
   Set db = session.CurrentDatabase
   parentUnid = doc.ParentDocumentUNID
   Set parent = db.GetDocumentByUNID (parentUnid )   
   Set collection = parent.Responses
   Set currentResponse = collection.GetFirstDocument

Jetzt würde ich die DocumentCollection durch gehen und die einzelnen Antwortdokuemnte bearbeiten...

Ist das soweit erstmal richtig oder renne ich da in die falsche Richtung?
Und wenn ich das soweit fertig habe mit einem Button, an welcher Stelle in der Maske sollte ich das am besten einbauen?
Im QuerySave event das dann zieht wenn das Flag gesetzt wurde?
Oder in einem der Events von dem Flagfeld?
Bin mir an der Stelle nicht sicher was die schlaueste/sauberste Methode wäre...

Vielen Dank
Stefan
Gruß Stefan

----------------------------------
EDV-Systeme verarbeiten, womit sie gefüttert werden. Kommt Mist rein, kommt Mist raus.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Antwortdokumente bearbeiten
« Antwort #3 am: 27.01.09 - 18:06:31 »
Ohne jetzt Deinen Code im Detail gecheckt zu haben: Du bist so auf dem richtigen Dampfer.

Wo Du das dann einbauen sollst, kann ich Dir so noch nicht beantworten, da mir Dein Ziel nicht klar ist. Willst Du sicherstellen, dass das Flag immer nur in einem Response ist? Dann solltest Du das entweder
- ins QuerySave packen oder
- in den Flag-setzen-Button, wenn Du dort auch gleichzeitig das aktuelle Dokument speicherst.

Aufpassen musst Du, dass Du ein Flag nur dann entfernst, wenn es nicht gerade das aktuelle Dokument ist (UniversalID zum Vergleich)!

Bernhard

Offline pimpfling

  • Senior Mitglied
  • ****
  • Beiträge: 367
  • Geschlecht: Männlich
Re: Antwortdokumente bearbeiten
« Antwort #4 am: 28.01.09 - 14:39:32 »
Hallo,

vielen Dank für die Hinweise.
mein Code im QuerySave sind nun wie folgt aus:

   Dim parentUnid As String
   Dim workspace As New NotesUIWorkspace   
   Dim uidoc As NotesUIDocument
   Dim db As NotesDatabase
   Dim Parent As NotesDocument   
   Dim collection As NotesDocumentCollection
   Dim currentResponse As NotesDocument
   Dim session As NotesSession
   Dim item As NotesItem
   
   Set uidoc = workspace.CurrentDocument
   Set doc = uidoc.Document
   Set session = New NotesSession
   Set db = session.CurrentDatabase
   parentUnid = doc.ParentDocumentUNID
   Set parent = db.GetDocumentByUNID (parentUnid )   
   Set collection = parent.Responses
   Set currentResponse = collection.GetFirstDocument
   
   
   If doc.GetItemValue( "DC_ActiveDevice" )(0) = "Yes" Then
      While Not currentResponse Is Nothing
         If doc.UniversalID <> currentResponse.UniversalID Then
            Set item = currentResponse.ReplaceItemValue( "DC_ActiveDevice", "" )
            Call currentResponse.Save( True, True )
            'Messagebox "Flag für Device " + currentResponse.GetItemValue( "DC_Device" )(0) + " gesetzt."
         End If
         Set currentResponse = collection.GetNextDocument(currentResponse)
      Wend
   End If

Funktioniert einwandfrei.
Jetzt mache ich mich daran das ganze mit den Antwortdokumenten in einer embedded View, mal sehen wie tricky das wird, wenn gewünscht kann ich das Ergebnis hier auch posten...

Leider fehlt mir momentan der Ansatz wie ich an das in der embedded view selectierte Antwortokument komme... :(


Gruß Stefan
« Letzte Änderung: 28.01.09 - 14:53:54 von pimpfling »
Gruß Stefan

----------------------------------
EDV-Systeme verarbeiten, womit sie gefüttert werden. Kommt Mist rein, kommt Mist raus.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Antwortdokumente bearbeiten
« Antwort #5 am: 28.01.09 - 15:06:03 »
Der einfachste Weg: Mach Deinen Button in die Ansicht und lass in der embedded view die Buhtongs mit anzeigen.

Bernhard

Offline pimpfling

  • Senior Mitglied
  • ****
  • Beiträge: 367
  • Geschlecht: Männlich
Re: Antwortdokumente bearbeiten
« Antwort #6 am: 28.01.09 - 15:31:49 »
Funzt super, danke :)

   Dim parentUnid As String
   Dim workspace As New NotesUIWorkspace   
   Dim uidoc As NotesUIDocument
   Dim db As NotesDatabase
   Dim Parent As NotesDocument   
   Dim collection As NotesDocumentCollection
   Dim currentResponse As NotesDocument
   Dim session As NotesSession
   Dim item As NotesItem
   Dim uiview As NotesUIView
   Dim doc As NotesDocument
   
   Set uidoc = workspace.CurrentDocument
   Set userdoc = uidoc.Document
   Set session = New NotesSession
   Set db = session.CurrentDatabase
   parentUnid = userdoc.UniversalID
   Set parent = db.GetDocumentByUNID (parentUnid )   
   Set collection = parent.Responses
   Set currentResponse = collection.GetFirstDocument
   Set uiview = workspace.CurrentView
   
   Set doc = db.GetDocumentByID(uiview.CaretNoteID)
   
   Set item = doc.ReplaceItemValue( "DC_ActiveDevice", "Yes" )
   Call doc.Save(True,True)
   
   If doc.GetItemValue( "DC_ActiveDevice" )(0) = "Yes" Then
      While Not currentResponse Is Nothing
         If doc.UniversalID <> currentResponse.UniversalID Then
            Set item = currentResponse.ReplaceItemValue( "DC_ActiveDevice", "" )
            Call currentResponse.Save( True, True )
            'Messagebox "Flag für Device " + currentResponse.GetItemValue( "DC_Device" )(0) + " gesetzt."
         End If
         Set currentResponse = collection.GetNextDocument(currentResponse)
      Wend
   End If
   
   Call Workspace.ViewRefresh   
Gruß Stefan

----------------------------------
EDV-Systeme verarbeiten, womit sie gefüttert werden. Kommt Mist rein, kommt Mist raus.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz