Seite 1 von 1

[Gelöst] Mit RecordRef Tabellen kopieren

Verfasst: 25. Juli 2018 09:14
von flashgord77
Hallo zusammen,

seit vielen Jahren lese ich in dem Forum mit und habe schon viele wertvolle Tipps erhalten. Dafür schonmal rückwirkend 1000 Dank. Nun stehe ich vor einem Problem und bin mir nicht sicher, ob ich da zu 'einfach' denke oder einen grundsätzlichen Fehler mache.

Ich möchte Datensätze von Mandant Q zu Mandant Z kopieren. Da es sich um 100 Tabellen handelt, möchte ich mit Referenzen arbeiten. Dies war meine Idee:

Code:
Rref_Q.OPEN(3,FALSE,'Mandant_Quelle');
Rref_Z.OPEN(3,FALSE,'Mandant_Ziel');

MESSAGE(Rref_Q.CURRENTCOMPANY);
MESSAGE(Rref_Z.CURRENTCOMPANY);

IF Rref_Q.FINDFIRST THEN
REPEAT
  Rref_Z:=Rref_Q;
  Rref_Z.INSERT(FALSE);
UNTIL Rref_Q.NEXT=0;


Im Mandant Ziel ist die Tabelle leer. Trotzdem bekomme ich die Fehlermeldung 'Datensatz existiert schon'.
Hat jemand eine Idee?

Wir setzen Build 16177 ein.

Viele Grüße
Flash

Re: Mit RecordRef Tabellen kopieren

Verfasst: 25. Juli 2018 11:29
von Timo Lässer
Durch deine Zuweisung Rref_Z:=Rref_Q; zeigt Rref_Z auf denselben Datensatz in demselben Mandanten wie Rref_Q.
Verwende stattdessen Rref_Z := Rref_Q.DUPLICATE;

Re: Mit RecordRef Tabellen kopieren

Verfasst: 25. Juli 2018 14:33
von flashgord77
Hallo Timo,

erst einmal vielen Dank für die schnelle Antwort. Leider bekomme ich noch immer den gleichen Fehler. Habe auch noch etwas über die DUPLICATE Funktion gesucht (die kannte ich vorher nicht). Auch die scheint den Datensatz in den gleichen Mandanten zu kopieren. Alle 'Lösungen' die im Internet danach kommen sind eine weiterer Schleife mit einem Transfer für jedes einzelne Feld.

Gibt es wirklich keinen anderen Trick?

Gruß
Flash

Re: Mit RecordRef Tabellen kopieren

Verfasst: 25. Juli 2018 14:40
von Ted
https://dynamicsuser.net/nav/f/developers/25130/recordref-to-recordref

schau mal da, der macht genau das was du machen moechtest

Re: Mit RecordRef Tabellen kopieren

Verfasst: 26. Juli 2018 08:41
von elroberto
Hi, du musst mit dem Ziel RecRef PingPong spielen.
CLEAR oder ähnliches klappt nicht, daher wieder ein CHANGECOMPANY nach dem INSERT, da hier der RecRef noch geöffnet ist.

Habe das mit einigen Datensätzen ausprobiert. Von Quelle an Ziel und umgekehrt. Ebenfalls habe ich den Code in einem dritten Mandaten ausgeführt und so die Datensätze von Quelle nach Ziel übertragen können.


Code:
RecRefQ.OPEN(3,FALSE,'Mandant_Quelle');
IF RecRefQ.FINDSET THEN BEGIN
  REPEAT
    RecRefZ := RecRefQ;
    RecRefZ.CHANGECOMPANY('Mandant_Ziel');
    RecRefZ.INSERT;
    RecRefZ.CHANGECOMPANY('Mandant_Quelle');
  UNTIL RecRefQ.NEXT = 0;
END;

Re: [Gelöst] Mit RecordRef Tabellen kopieren

Verfasst: 27. Juli 2018 11:41
von flashgord77
Super,

vielen Dank für die Tipps, damit hat es geklappt.

1000 Dank!

Gruß
Flash