Hallo atnotes-Gemeinde,
seit Tagen lässt mir folgendes Problem keine Ruhe, dass ich wegen der vielen vergeblichen Lösungsversuche ausführlicher beschreiben muß:
In einem Stammblatt liegen zentral Informationen zu einem Auftragsvorgang von der ersten 1. Anfrage bis zur Schlußrechnung.
Die Mitarbeiter können über Schalter gut 40 verschiedene Aktionen ausführen (Freigaben, Bestellungen auslösen, Proforma-Rechnungen erstellen usw.)
Seitdem wir diese Maske eingeführt haben, sorgt sie permanent für Replikations- und Speicherkonflikte:
- Eine gleichzeitige Bearbeitung von mehreren Mitarbeitern gibt es nicht und
- es greifen keine Agenten auf diese Dokumente zu oder werden von Benutzern ausgelöst.
- Die Maske enthält keine berechneten Felder, kein DBPath-Feld o.ä.
- kein "Felder aktualisieren" (Maskeneigenschaften)
- Im QuerySave wird nur für den Fall, dass im Projektverlauf aus einem Interessenten eine Kunde mit entspr. Kundennummer wurde, die neue Kundennummer gezogen und gespeichert. Bei 95% der Speicherkonflikte war die Kundennummer bereits bei der Anlage vorhanden und daher die QuerySave ohne weitere Aktion beendet.
- Es gibt nur drei Eingabefelder und der Konflikt entsteht unabhängig, ob hier etwas geändert wurde oder nicht.
Die Datenbank ist mit einem zweiten Server in einem Cluster und die Maskeneinstellung für Replikationskonflikte steht auf "Mischen/Keine Konflikte". Allerdings arbeitete niemand auf dem zweiten Cluster-Server. Natürlich dort auch keine Agenten etc. Lokale Repliken gibt es nicht.
Die Speicherkonflikte kann ich beliebig auslösen, wenn man zB. nur den Status des Projektes verändert oder sich als Bearbeiter einträgt.
Konkretes Beispiel: die Mitarbeiter können sich als Bearbeiter eintragen (Aktion)
1. Versuch (Formel)
@Command([EditDocument];"1");
FIELD Bearbeiter := @Name([CN];@UserName);
@PostedCommand([FileSave]);
@PostedCommand([EditDocument];@False);
2. Versuch Script: (egal, ob mit oder ohne speichern)
Dim ws As NotesUIWorkspace
Dim s As New NotesSession
Dim uidoc As NotesUIDocument
Set ws = New NotesUIWorkspace
Set uidoc = ws.CurrentDocument
If uidoc.EditMode=False Then uidoc.EditMode=True
Call uidoc.FieldSetText("Bearbeiter",s.CommonUserName)
3. Versuch mit Script:
ID des Backenddokuments holen, im Frontend ändern, speichern, schließen, Frontend Objekt löschen (mit Delete uidoc bzw. Delete doc) und als neues NotesDocument zum bearbeiten öffnen (hier im Forumzweimal erwähnt, den Code muß ich hier nicht wiederholen)
4. Versuch mit Script (mit uidoc.Reload)
Dim ws As New NotesUIWorkspace
Dim s As New NotesSession
Dim doc As NotesDocument
Dim uidoc As NotesUIDocument
Set uidoc = ws.CurrentDocument
Set doc = uidoc.document
uidoc.EditMode = True
Call doc.ReplaceItemValue("Bearbeiter",s.CommonUserName)
call uidoc.reload
Call uidoc.save
uidoc.EditMode = False
Also ich bin jetzt wirklich ratlos. Es ist gleich, ob der Code in einer Aktion oder einer Schaltfläche steckt. Selbst der Gedanke, die Maske hat einen Schuß weg brachte nichts. Auch in der neuen Maske gleiches Ergebnis...