Zuweisung überschreibt xRec
Verfasst: 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
Nimmt man Transferfields, dann läuft alles:
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
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