Domino 9 und frühere Versionen > ND6: Entwicklung
Konflikte bei Haupt- und Antwortdokumenten
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