Domino 9 und frühere Versionen > ND6: Entwicklung

Konflikte bei Haupt- und Antwortdokumenten

(1/3) > >>

cash:
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

DAU-in:
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

m3:

--- Zitat von: cash am 19.09.08 - 08:45:15 ---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?
--- Ende Zitat ---
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!

cash:
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

DAU-in:
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

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln