Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: cash am 19.09.08 - 08:45:15

Titel: Konflikte bei Haupt- und Antwortdokumenten
Beitrag von: cash am 19.09.08 - 08:45:15
Ich habe eine Datenbank mit Haupt- und Antwortdokumenten. Die Datenbank wird nur von ca. 6 Personen genutzt. Ist also kein Mengenproblem.

Im Antwortdokument sind dort u. a. eingebetete Ansichten mit dem Hauptdokument.
Wenn ein Mitarbeiter das Hauptdokument öffnet und wieder schließt für Notes einen Agenten aus der per Script einige Felder vom Hauptdokument in alle Antwortdokumente erstellt.

Wenn der Mitarbeiter danach das geöffnete Antwortdokument bearbeiten will kommt es beim Speichern zu konflikten.

Wie verhindere ich diese Konflikte am besten?

Dies passiert auch nur bei einen bestimmten Antwortdokument mit der Maske "Kommision" bei den anderen Antwortdokumenten (Maske "Gutachten") kann das nicht passieren, weil diese nicht bearbeitet werden können). Bei der Maske "Kommision müßte das Hauptdokument auch nichts aktualisieren bei den anderen schon

Eine Möglichkeit wäre also die Maske Kommission auszuschließen. Die andere vor dem Bearbeiten bzw Speichern das Dokument zu aktualisdieren. Welches ist die bessere?

Gruß

Thomas

Hier mal der Script im Agenten:

Sub Initialize
   
   On Error Goto hell
      
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim dc As NotesDocumentCollection
   Dim agent As NotesAgent
   Dim respdoc As NotesDocument
   Dim parent As NotesDocument
   
   Set db = session.CurrentDatabase
   
   Set agent = session.CurrentAgent
   Set parent = db.GetDocumentByID(agent.ParameterDocID)
   'Set parent = db.GetDocumentByUNid(Source.Document.ParentDocumentUNID) ´wenn der Script im Queryclose ist
   
   Set dc = parent.Responses
   
   If dc.count > 0 Then
      Print "Script läuft"
      Call dc.StampAll( "leser_response" , parent.leser_response )
      
   End If
   
   
   Exit Sub
hell:
   Print {error #} & Cstr(Err()) & { } & Error() & { in line } & { } &  Cstr(Erl())
   Exit Sub
   
End Sub

Titel: Re: Konflikte bei Haupt- und Antwortdokumenten
Beitrag von: DAU-in am 19.09.08 - 09:18:49
du hast das Dokument geöffnet und veränderst, während es geöffnet ist, das Backenddokument.

Call dc.StampAll( "leser_response" , parent.leser_response )
Das muss einen Speicherkonflikt geben.

also die Frontend- und Backendaktionen sauber voneinander trennen und jeweils abspeichern.

grüsse


Dau-in
Titel: Re: Konflikte bei Haupt- und Antwortdokumenten
Beitrag von: m3 am 19.09.08 - 09:19:08
Im Antwortdokument sind dort u. a. eingebettete Ansichten mit dem Hauptdokument.
Wenn ein Mitarbeiter das Hauptdokument öffnet und wieder schließt führt Notes einen Agenten aus, der per Script einige Felder vom Hauptdokument in alle Antwortdokumente erstellt.

Wenn der Mitarbeiter danach das geöffnete Antwortdokument bearbeiten will kommt es beim Speichern zu konflikten.

Wie verhindere ich diese Konflikte am besten?
Option a) Antwortdokument schließen, bevor die Werte darin umgeschossen werden
Option b) Antwortdokument neu laden, nachdem die Werte im Backend (Agent) umgeschossen wurden. Alle bisherigen Änderungen im Frontend gehen dabei aber verloren.

Bitte achte etwas genauer auf Deine Rechtschreibung. Zumindest in den Fällen, wo sie sinnverzerrend/sinnzerstörend sind. Danke!
Titel: Re: Konflikte bei Haupt- und Antwortdokumenten
Beitrag von: cash am 19.09.08 - 09:36:55
Da wäre mir Option B am liebsten nur wie mache ich das?

Das geöffnete Dokument befindet sich im Moment wo der Agent läuft im Lese-Modus.

Erst danach drücken die Benutzer den Button "Bearbeiten"

@Command([EditDocument];1);
@PostedCommand([ViewRefreshFields]);

Nur das Refresh bringt leider nichts....

Gruß

Thomas

Titel: Re: Konflikte bei Haupt- und Antwortdokumenten
Beitrag von: DAU-in am 19.09.08 - 09:49:49
ich weiss nicht, obs funzt: die UNID in eine Variable auslesen, dok schliesssen und mit

@Command( [OpenDocument] ; writeOrReadOnly ; UNID ; width : height) 

wieder holen

grüsse

Dau-in
Titel: Re: Konflikte bei Haupt- und Antwortdokumenten
Beitrag von: DAU-in am 19.09.08 - 09:51:49
Da wäre mir Option B am liebsten nur wie mache ich das?

Das geöffnete Dokument befindet sich im Moment wo der Agent läuft im Lese-Modus.

Erst danach drücken die Benutzer den Button "Bearbeiten"

@Command([EditDocument];1);
@PostedCommand([ViewRefreshFields]);

Nur das Refresh bringt leider nichts....

Gruß

Thomas



änder mal die Reihenfolge

du gehst ja erst in den Editiermodus und aktualisierst dann


@Command( [ReloadWindow] )
und dann editieren?
Titel: Re: Konflikte bei Haupt- und Antwortdokumenten
Beitrag von: cash am 19.09.08 - 10:38:15
mit Reloadwindow funktioniert leider auch nicht....

habe das Dokument mal komplett geschlossen mit:

_DocID := @Text(@DocumentUniqueID);
@Command([FileCloseWindow]);

@Command ([OpenView]; "Alle");
@Command([OpenDocument];"1";_DocID);
@Command ([OpenView]; "Alle");
@Command ([FileCloseWindow])

Dann schließt er das Dokument zwar öffnet es aber komischerweise nicht im Bearbeitenmodus...
Wenn ich anschließend mit Doppelklick in den Edit-Mode gehe kommt beim speichern weiterhin die Fehlermeldung....

Gruß

Thomas
Titel: Re: Konflikte bei Haupt- und Antwortdokumenten
Beitrag von: LN4ever am 19.09.08 - 22:26:50
Wenn du das Antwortdokument nur vom Hauptdokument in einer Dialogbox öffnen kannst, kann dir das nicht passieren. Ist das vielleicht Dein Weg ?

Gruß

Norbert
Titel: Re: Konflikte bei Haupt- und Antwortdokumenten
Beitrag von: cash am 23.09.08 - 08:39:38
das funktioniert leider nicht. Zumal die Felder die im besagten Antwortdokument (Kommision) enthalten sind nicht im Hauptdokument vorkommen. Außerdem kann das Antwortdokument nur von sehr wenigen Mitarbeitern gelesen werden während das Hauptdokument von allen zu  lesen ist.

Ich komme irgendwie nicht weiter mit meinen Problem. Vermutlich wäre immer noch das beste einfach dieses Antwortdokument aus der Aktualisierung herauszulassen nur weiß ich leider nicht wie.

Hat vielleicht noch einer einen Tipp für mich was ich mir in der Designer Hilfe nochmal intensiv durchlesen sollte?

Gruß

Thomas
Titel: Re: Konflikte bei Haupt- und Antwortdokumenten
Beitrag von: bikerboy am 23.09.08 - 09:07:57
Kurze Frage, hast du beim deinen Masken Merge/Conflicts eingeschaltet ? Wenn du nicht gerade mit dem Agenten die Felder veränderst die du im UI hast , sollte dein Problem gelöst sein.
Titel: Re: Konflikte bei Haupt- und Antwortdokumenten
Beitrag von: cash am 23.09.08 - 09:30:24
ja das habe ich eingestellt ohne Erfolg...

Habe jetzt mein Script mal umgeschrieben nun stampe ich nicht mehr alle Antwortdokumente aufeinmal sondern einzeln. Wie kann ich jetzt dort die Antwortdokument mit der Form "Kommision" ausschließen?

Sub Initialize
   
   
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim dc As NotesDocumentCollection
   Dim agent As NotesAgent
   Dim respdoc As NotesDocument
   Dim parent As NotesDocument
   Set db = session.CurrentDatabase
   
   Set agent = session.CurrentAgent
   Set parent = db.GetDocumentByID(agent.ParameterDocID)
   'Set parent = db.GetDocumentByUNid(Source.Document.ParentDocumentUNID) 'wenn der Script im Queryclose ist
   
   Set dc = parent.Responses
   Set doc = dc.GetFirstDocument()
   
   If dc Is Nothing Then
      Print {error #} & Cstr(Err()) & { } & Error() & { in line } & { } &  Cstr(Erl())
      Exit Sub
   End If
   While Not(doc Is Nothing)
      Call doc.ReplaceItemValue("leser_response", parent.leser_response)
      Call doc.Save( True, False )
      Set doc = dc.GetNextDocument(doc)
   Wend
   
End Sub

Gruß

Thomas
Titel: Re: Konflikte bei Haupt- und Antwortdokumenten
Beitrag von: DAU-in am 23.09.08 - 09:46:07
if not doc.form(0) = "blabla" then

end if

?
Titel: Re: Konflikte bei Haupt- und Antwortdokumenten
Beitrag von: cash am 23.09.08 - 10:02:29
jau Super... Klappt und es kommen auch anscheinend keine Konflikte mehr.

Wobei ich das vermutlich erst in ein paar Wochen wirklich sagen kann....

Die ersten beiden Tests verliefen zumindst positiv....

Vielen Dank

Thomas