[Gelöst] Temporäre Tabelle mit DB synchronisieren

12. April 2007 10:37

Seit 5.0 hat man endlich die Möglichkeit eine Form auf Basis einer temporären Tabelle zu erstellen.
(Es ging davor auch schon, aber jetzt muss man nicht mehr programmieren)
Dieses habe ich mir zunutze gemacht um eine Baumstruktur wie z.B. in Form 703 darzustellen.
Es funktioniert soweit ganz gut. Jetzt möchte ich aber die Änderungen an den Datensätzen
in die Datenbank zurückschreiben, da sie augrund der temporären Tabelle sonst verloren gehen würden.
Dazu habe ich im OnModifyRecord Trigger der Form folgenden Code eingefügt :

LokaleRecordVariable := Rec;
LokaleRecordVariable.MODIFY;

Beim der ersten Änderung klappt es wunderbar, aber beim 2. Mal erscheint die Fehlermeldung
"Ein anderer Anwender...". In Form 5522, die nach dem gleichen Prinzip arbeitet werden
die Änderungen problemlos zurückgeschrieben, ich konnte allerdings nicht herausfinden
wie das funktioniert.

Wie kann man eine Synchronisierung zwischen einer temporären Tabelle und der DB
gewährleisten bzw. ist das überhaupt möglich ?
Zuletzt geändert von Felix Brenkel am 10. Januar 2008 15:00, insgesamt 1-mal geändert.

12. April 2007 11:45

Hallo Felix,

wie ist die Form eingestellt (DelayedInsert ) ?

Gruß Hoschi Blume

12. April 2007 11:56

Hallo Hoschi,

DelayedInsert = Yes.

Habe es mal gändert, aber es brachte keine Abhilfe.

Anonsten noch AutoSplitKey = Yes
und logischerweise SourceTableTemporary = Yes.

12. April 2007 12:17

Teste das ganze mal mit

Code:
LokaleRecordVariable := Rec;
LokaleRecordVariable.FIND;
LokaleRecordVariable := Rec;
LokaleRecordVariable.MODIFY;


oder ein ordinärer GET auf die lokale Variable anstatt der ersten 2 Zeilen.

12. April 2007 15:29

Hallo SilverX,

danke für die Antwort, aber es hat leider nichts geholfen.
Weder mit FIND oder GET. Über TRANSFERFIELDS habs ichs auch versucht aber leider mit dem gleichen Ergebnis.

13. April 2007 16:14

Das Problem würde sich auch lösen lassen wenn man eine Form erstellen könnte für eine Baumstruktur, die sich auf- und zuklappen lässt und nicht auf einer temporären Tabelle basiert. Dann werden die Änderungen ja automatisch in die DB zurückgeschrieben.

Hat jemand Beispiele / Erfahrungen für eine solche Form ?

27. April 2007 16:08

Ich habe das Problem gelöst und es war auch gar nicht so schwer :

Code:
LokaleRecordVariable := Rec;
LokaleRecordVariable.MODIFY;
Rec := LokaleRecordVariable;


Der MODIFY erzeugt eine neue Version des Datensatzes. Im angezeigten Rec steht aber immer noch die alte Version und eine erneute Änderung würde für eine nicht mehr gültige Version erfolgen. Deshalb muss man nach dem MODIFY dem Rec einfach die neue Version zuweisen.

Wer Infos zum Aufbau einer Form mit Baum braucht kann sich gerne an mich wenden.