Autor Thema: Speicherkonflikt durch SetField in QuerySave ???  (Gelesen 1141 mal)

Offline markreimann

  • Frischling
  • *
  • Beiträge: 33
  • Geschlecht: Männlich
Speicherkonflikt durch SetField in QuerySave ???
« am: 16.01.08 - 08:46:38 »
Hallo zusammen :-)

ich hätte da mal folgendes Problem:

Ich habe eine Verwaltung von SB-Geräten, wo ich überwache, ob das Gerät den Standort gewechselt hat. Ist dies der Fall, wird es in der Historie vermerkt.

Dazu habe ich im QueryOpen zwei Felder gefüllt mit dem Standort (Filiale und Standort). In QuerySave prüfe ich dann, ob jemand diese Felder geändert hat und schreibe dann per @SetField den Wert in die Historie.

Prinzipiell funktioniert das, allerdings bei jeder zweiten Änderung kommt ein Speicherkonflikt:
"Another copy of this document was saved while you were editing it. Save your changes also as a Save Conflict document ?"

Wie kann ich das vermeiden und warum kommt diese Meldung überhaupt ?
Mit den Konflikteigenschaften in der Maske hat es wohl nichts zu tun und ich arbeite definitiv als einziger an diesem Datensatz.

Diese Formeln verwende ich:

Query Open:
Code
@SetField("tmp_SB_GS"; SB_GS);
@SetField("tmp_SB_Standort"; SB_Standort)

QuerySave:
Code
_HistorieText := "Standortveränderung: " + tmp_SB_GS + " (" + tmp_SB_Standort + ") ===> " + SB_GS + " (" + SB_Standort + ")";
@If	(
		SB_Historie = "";
		_Historieneu := _HistorieText;
		_Historieneu := _HistorieText : SB_Historie
		);

@If	(
		SB_GS != tmp_SB_GS | SB_Standort != tmp_SB_Standort;
		FIELD SB_Historie := _Historieneu;
		@Success
		)

Viele Grüsse aus Gütersloh,
Mark Reimann
Mark Reimann

"Wer Rechtschreibfehler findet, darf sie behalten"

Offline Andrew Harder

  • Senior Mitglied
  • ****
  • Beiträge: 295
  • Geschlecht: Männlich
Re: Speicherkonflikt durch SetField in QuerySave ???
« Antwort #1 am: 16.01.08 - 11:28:24 »
Hallo,

gibt es einen Grund, warum Du Queryopen statt Postopen benutzt?
Ich vermute auf den ersten Blick, das das Problem darin begründet ist.

Warum machst Du das ganze nicht in LotusScript?
Du kannst eine Variable innerhalb der Maske Global deklarieren und diese dann im Querysave abfragen.
Dadurch benötigst Du keine temporären Felder mehr.
Andy

Offline markreimann

  • Frischling
  • *
  • Beiträge: 33
  • Geschlecht: Männlich
Re: Speicherkonflikt durch SetField in QuerySave ???
« Antwort #2 am: 16.01.08 - 12:12:35 »
Hallo Andrew,

vielen Dank für die Lösung !!!
Ich mußte den Code tatsächlich nur von QueryOpen nach PostOpen kopieren.
Einen besonderen Grund hatte ich dafür übrigens nicht, ich dachte nur das man das vor dem Öffnen des Dokuments macht.  Für mich war QueryOpen immer vor dem Öffnen und PostOpen nach dem Öffnen. Ist dem jetzt nicht so ? Und was ist der genaue Unterschied ?

In Lotus Script mache ich das nicht, weil ich das noch nicht kann, bin jetzt erst mit dem Lernen angefangen und bekomme im Laufe des Jahres eine Schulung.
Aber Danke für den Tipp mit dem "Global", ich meine zu verstehen wie das gehen soll. Probiere ich später mal aus.

Nochmal vielen Dank  :D
Mark Reimann

"Wer Rechtschreibfehler findet, darf sie behalten"

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Speicherkonflikt durch SetField in QuerySave ???
« Antwort #3 am: 16.01.08 - 12:14:58 »
... im QueryOpen sind die Felder noch nicht vorhanden, beim Postopen liegt die Maske komplett initialisiert vor...

Toni
Grüßle Toni :)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz