26. November 2014 14:53
RecRef1.OPEN(TableID,FALSE,'Vorlage Mandant');
IF RecRef1.FIND('-') THEN BEGIN
RecRef2.OPEN(TableID,FALSE,'Test Mandant');
REPEAT
RecRef2.INIT();
RecRef2 := RecRef1;
RecRef2.INSERT(FALSE);
UNTIL (RecRef1.NEXT = 0);
RecRef2.CLOSE();
END;
RecRef1.CLOSE();
26. November 2014 15:17
RecRef1.OPEN(TableID,FALSE,'Vorlage Mandant');
IF RecRef1.FIND('-') THEN BEGIN
RecRef2.OPEN(TableID,FALSE,'Test Mandant');
REPEAT
RecRef2.INIT();
FOR I := 1 TO RecRef1.FIELDCOUNT DO BEGIN
// (evtl. noch auf FieldClass und Enabled prüfen)
RecRef2.FIELDINDEX(I).VALUE := RecRef1.FIELDINDEX(I).VALUE;
END;
RecRef2.INSERT(FALSE);
UNTIL (RecRef1.NEXT = 0);
RecRef2.CLOSE();
END;
RecRef1.CLOSE();
26. November 2014 15:41
WHILE FieldRefIndex < RecRef1.FIELDCOUNT DO BEGIN
FieldRefIndex += 1;
FieldRef1 := RecRef1.FIELDINDEX(FieldRefIndex);
FieldRef2 := RecRef2.FIELDINDEX(FieldRefIndex);
IF NOT (FORMAT(FieldRef1.TYPE) IN['Binary','BLOB']) AND (FORMAT(FieldRef1.CLASS) = 'Normal') THEN
FieldRef2.VALUE := FieldRef1.VALUE;
END;
RecRef2.INSERT;
//bei großen Tabellen evtl. noch COMMIT; nach jedem Rec setzen, sonst läuft Cache irgendwann über
//COMMIT;
RecRef1.CLOSE;
RecRef2.CLOSE;
CLEAR(RecRef1);
CLEAR(RecRef2);
CLEAR(FieldRefIndex);
CLEAR(FieldRef1);
CLEAR(FieldRef2);
26. November 2014 16:05
Timo Lässer hat geschrieben:Meine Vermutung:
Durch die Zuweisung RecRef2 := RecRef1 wird die gesamte Referenz umgelenkt, so dass RecRef2 dann plötzlich wieder auf den Vorlagen-Mandanten verweist.