23. August 2016 12:12
Moin zusammen,
wir sind gerade bei einem Upgrade von 2009R2 auf 2016. Dabei ist uns aufgefallen, dass eine einfache Zuweisung von einer lokalen, temporären Record-Variable auf eine übergebene, nicht temporäre Record-Variable des gleichen Typs dazu führt, das der xRec der Ziel-Variable das selbe enthält wie der Rec. Dadurch wird das folgende Modify(True) zwar ausgeführt, aber die Aktualisierung des physikalischen Datensatzes auf der Datenbank nicht.
ResTaskLoc = Temporäre Record Variable
ResTaskPar = An die Funktion übergebene, nicht temporäre Record Variable
- Code:
IF OpenDelegateTask(ResTaskLoc,Text0052) THEN BEGIN
ResTaskPar := ResTaskLoc;
ResTaskPar.MODIFY(TRUE);
END;
Nimmt man Transferfields, dann läuft alles:
- Code:
IF OpenDelegateTask(ResTaskLoc,Text0052) THEN BEGIN
ResTaskPar.TRANSFERFIELDS(ResTaskLoc);
ResTaskPar.MODIFY(TRUE);
END;
Hier gab es offensichtlich eine Änderung im Verhalten, denn unter 2009R2 funktioniert auch der erste Code-Block prima.
Ist das ein Bug, oder ein Feature?
Danke für Eure Einschätzungen
Andreas