Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Big768 am 05.11.08 - 16:56:40

Titel: Eine weitere kopie dieses Dokuments wurde gespeichert
Beitrag von: Big768 am 05.11.08 - 16:56:40
Liebe Noteskolleginnen und - kollegen,

ich habe eine Datenbank erstellt, in der des öfteren folgende Fehlermeldung erscheint:

IBM Lotus Notes: Eine weitere Kopie dieses Dokuments wurde gespeichert, während Sie das Dokument bearbeitetn. Sollen Ihre Änderungen auch als Konfliktdokument gespeichert werden?

Wie kann ich diesen Fehler unterbinden?

Unter den Datenbankeigenschaften habe ich schon angehakt: Sperren von Dokumenten zulassen

In der Maske habe ich angehakt: Konflikte nicht erstellen

Aber trotzdem erscheint die Fehlermeldung. Durch "Sperren von Dokumenten zulassen" können doch eigentlich keine zwei Benutzer ein Dokument bearbeiten.?

Vielen Dank für Eure Hilfe im voraus.

Johann
Titel: Re: Eine weitere kopie dieses Dokuments wurde gespeichert
Beitrag von: koehlerbv am 05.11.08 - 17:04:12
Hast Du Code im QuerySave der Maske zu stehen? Ggf. auch im Query- oder PostOpen oder im PostRecalc? Kommt da NotesDocument.Save vor?

Bernhard
Titel: Re: Eine weitere kopie dieses Dokuments wurde gespeichert
Beitrag von: Big768 am 05.11.08 - 17:09:46
Im "PostOpen" steht ein "Call thisdoc.save( False, False)" und ein "Call doc.save( True, True )" für Documente die erstellt werden.

Titel: Re: Eine weitere kopie dieses Dokuments wurde gespeichert
Beitrag von: jBubbleBoy am 05.11.08 - 17:12:44
Dokumente sperren geht nur wenn ein Administrationsserver eingetragen wurde, siehe ACL.
Titel: Re: Eine weitere kopie dieses Dokuments wurde gespeichert
Beitrag von: koehlerbv am 05.11.08 - 17:18:24
Und Dokumentsperrung würde hier gar nichts nützen - hier wird ganz bewusst ein Speicherkonflikt erzeugt. Die Programmlogik muss da geändert werden.

Bernhard
Titel: Re: Eine weitere kopie dieses Dokuments wurde gespeichert
Beitrag von: m3 am 05.11.08 - 17:18:40
Im "PostOpen" steht ein "Call thisdoc.save( False, False)" und ein "Call doc.save( True, True )" für Documente die erstellt werden.


Na da sind ja auch schon die Problemmacher. Bitte hold Dir einen Baseballschläger und besuche den Entwickler der Datenbank.
Titel: Re: Eine weitere kopie dieses Dokuments wurde gespeichert
Beitrag von: Big768 am 05.11.08 - 17:20:13
Ich bin kein Masochist.
Titel: Re: Eine weitere kopie dieses Dokuments wurde gespeichert
Beitrag von: jBubbleBoy am 05.11.08 - 17:21:51
tritt den der Fehler manchmal oder immer auf?
Titel: Re: Eine weitere kopie dieses Dokuments wurde gespeichert
Beitrag von: m3 am 05.11.08 - 17:23:53
@Bläschenjunge: Mit den doc.save calls tritt das Problem immer auf.
Titel: Re: Eine weitere kopie dieses Dokuments wurde gespeichert
Beitrag von: Big768 am 05.11.08 - 17:26:14
Der Fehler tritt manchmal auf.

Hilft es, wenn ich den Programmcode von "PostOpen" in eine Schaltfläche kopiere?
Titel: Re: Eine weitere kopie dieses Dokuments wurde gespeichert
Beitrag von: koehlerbv am 05.11.08 - 17:33:26
Nein - das dürfte nichts ändern (allerdings kenne ich Dein Vorhaben nicht).
Du solltest Dich mit dem möglichen Gegensatz zwischen Back- and Frontend auseinandersetzen ...

Wenn wir helfen sollen, dann beschreibe bitte, was Du dort zu welchem Zweck überhaupt treibst.

Bernhard
Titel: Re: Eine weitere kopie dieses Dokuments wurde gespeichert
Beitrag von: Big768 am 05.11.08 - 17:47:59
Ich habe eine Datenbank: Nennen wir sie Materialanforderung

Der Anwender soll beim Start sofort alle bestellbaren Artikel sehen und auswählen können.

Wenn die Maske geöffnet wird, erstelle ich zunächst ein Kopf Dokument mit den Bestelldaten und für jeden bestellbaren Artikel eine Positions-Dokument. Die Positionen zeige ich dann in einer eingebetteten Ansicht an. Durch einen Doppelklick auf eine Position kann er angeben wieviel Stück er davon benötigt. Abschließend kann er die Bestellung an Lager senden, dass ihm dann die Waren zusendet.

Das erstellen des Bestellkopfes und der Positionen mache ich im PostOpen.

Ich kann mir vorstellen, dass man dass mit Anwortdokumenten eleganter lösen kann aber diese Technik hat bei mir noch nie funktioniert.
 
Titel: Re: Eine weitere kopie dieses Dokuments wurde gespeichert
Beitrag von: jBubbleBoy am 05.11.08 - 18:08:46
@Bläschenjunge: Mit den doc.save calls tritt das Problem immer auf.
Warum muss "doc.save" immer ein Konflikt erzeugen?? So etwas schreib mindestens 2 mal täglich!
Titel: Re: Eine weitere kopie dieses Dokuments wurde gespeichert
Beitrag von: Big768 am 05.11.08 - 18:10:35
Das frage ich mich auch.
Titel: Re: Eine weitere kopie dieses Dokuments wurde gespeichert
Beitrag von: guesswho am 05.11.08 - 18:27:03
Zitat
Warum muss "doc.save" immer ein Konflikt erzeugen?? So etwas schreib mindestens 2 mal täglich!
aber nicht im PostOpen, oder....

jo
Titel: Re: Eine weitere kopie dieses Dokuments wurde gespeichert
Beitrag von: jBubbleBoy am 05.11.08 - 18:33:55
Warum denn nicht??
Ihr wisst doch gar nicht was "thisdoc" ist, kann doch ein Dokument einer anderen DB sein oder was weiß ich ... wurde doch bisher gar nicht beschrieben, woher nehmt ihr denn euer Wissen?
Titel: Re: Eine weitere kopie dieses Dokuments wurde gespeichert
Beitrag von: guesswho am 05.11.08 - 18:37:44
sorry, war grad kurz angebunden. doc.save geschieht im Backend, im Postopen ist das Dokument aber bereits im Frontend geöffnet, kriegt dann den Focus, wird im Frontend geändert und dann gespeichert (im Backend, welches aber zuvor schon gespeichert wurde).

Wieviele Backend-Doks haben wir nun ?!  ::)

bitte ankreuzen
[ ] 1
[ ] 2
[ ] 1,5
[ ] weiss nicht

Jo

P.S. Es gibt binär gesehen nur 2 Zustände: 10
Titel: Re: Eine weitere kopie dieses Dokuments wurde gespeichert
Beitrag von: guesswho am 05.11.08 - 18:40:27
Zitat
woher nehmt ihr denn euer Wissen?
Erfahrung  ;D

jo
Titel: Re: Eine weitere kopie dieses Dokuments wurde gespeichert
Beitrag von: jBubbleBoy am 05.11.08 - 19:17:43
Zitat
woher nehmt ihr denn euer Wissen?
Erfahrung  ;D

jo
na dann löse doch mal das Problem mit deiner Erfahrung ;)
Titel: Re: Eine weitere kopie dieses Dokuments wurde gespeichert
Beitrag von: guesswho am 05.11.08 - 19:20:35
gern, wo soll ich hinreisen ?! Rechnungsadresse ?!

doc.save oder thisdoc.save wird wohl kaum auf docinotherdatabase verweisen ?!

auch die Konstellation oben deutet nicht auf die Zusammenarbeit mehrerer Datenbanken hin...

oder ?!

jo
Titel: Re: Eine weitere kopie dieses Dokuments wurde gespeichert
Beitrag von: koehlerbv am 05.11.08 - 21:03:39
Bevor das jetzt in Streitereien wegen (untauglichen) Deutungsversuchen ausartet:
Johann ("Big768"), bitte Fakten auf den Tisch. Sonst kann Dir keiner helfen.

Bernhard
Titel: Re: Eine weitere kopie dieses Dokuments wurde gespeichert
Beitrag von: Big768 am 06.11.08 - 10:12:24
Also die Deutungsversuche waren schon nicht schlecht und ich denke es hat etwas mit dem Gegensatz Front- und Backend zu tun.

Die Maske wird geöffnet und im PostOpen werden zunächst mit call thisdoc.save die Kopfdaten in einem Dokument in der Datenbank gespeichert.
Anschließend werden im PostOpen die Artikel eingelesen und für jeden Artikel wird ein Positionsdokument erstellt. Es wird mit call doc.save gespeichert.

Anbei der Kerncode:
Kopfdaten:
If source.document.noteid = "0" Then
        Set uiDoc = ws.CurrentDocument
        Set db = session.currentDatabase
   Set thisDB = session.CurrentDatabase
   Set thisDoc = ws.CurrentDocument.Document
   Set doc = db.CreateDocument
.
.
.
Call thisDoc.Save( False, False )
.
.
.
' Positionsdaten:
Set dbgk = New NotesDatabase( "Server", "Positionen.nsf" )
Set viewgk = dbgk.getview( "aktiv" )
Set vcgk = viewgk.AllEntries
.
.
.   
      
For L = 1 To vcgk.Count      
   Set entry = vcgk.GetNthEntry(L)
   Set docgk = entry.Document
.
.
.
   Call doc.save ( False, False)
Next
End if

Kann ich für das Frontend oder Backend eine Zeitverzögerung einbauen, damit die gleich sind?
Titel: Re: Eine weitere kopie dieses Dokuments wurde gespeichert
Beitrag von: DAU-in am 06.11.08 - 10:18:50
Du musst Änderungen und anschliessendes Speichern im Front- und Backend jeweils sauber trennen.
und ggf. das Frontenddokument schliessen und wiederöffnen, um die Änderungen aus dem Backend ins Frontend zu bringen.

eine Zeitverzögerung hilft da gar nichts.
Titel: Re: Eine weitere kopie dieses Dokuments wurde gespeichert
Beitrag von: tge am 06.11.08 - 12:38:19
Hallo allerseits,

wenn denn im Postopen unbedingt das korrespondierende Backend-Dokument gespeichert werden muss, warum dann nicht im QueryModeChange-Ereignis der Maske
Call notesUIDocument.Reload( )
einfügen?

Viele Grüße
Thorsten
Titel: Re: Eine weitere kopie dieses Dokuments wurde gespeichert
Beitrag von: Big768 am 06.11.08 - 14:24:50
Das probiere ich mal aus.

Außerdem schließe die   "Call thisDoc.Save" und "Call Doc.Save" mit ( False, False ).

Schon mal vielen Dank.  :)

Johann