[gelöst] RecordRef über Mandanten kopieren

19. März 2007 16:55

Hallo,

ich möchte aus einem Mandanten via Recordref verschiedene Datensätze in einen anderen Mandanten kopieren.

recref.open(5000,false,mandant1);
if recref.find('-') then repeat
recrefneu := recref;
????
recrefneu.insert;
until recref.next = 0;

Durch die Zuweisung bekommt der Recrefneu jetzt auch die Mandantenkennung Mandant1.

Gibt es eine Möglichkeit, Ihm hier auf Mandant2 zu setzen?? (Ausser ein Feldweises kopieren mit Fieldref)


viele Grüße Thomas
Zuletzt geändert von tba am 20. März 2007 17:30, insgesamt 1-mal geändert.

19. März 2007 18:29

So schlimm ist das ja ncht.
Du kannst Die Felder ja in einer Schleife kopieren.

Code:
CopyRecord(SourceRecRef : RecordRef;TargetRecRef : RecordRef)
FOR i := 1 TO SourceRecRef.FIELDCOUNT DO BEGIN
  SourceFieldRef := SourceRecRef.FIELDINDEX(i);
  TargetFieldRef := TargetRecRef.FIELDINDEX(i);
  Field.GET(SourceRecRef.NUMBER, SourceFieldRef.NUMBER);
  IF Field.Type <> Field.Type::BLOB THEN BEGIN
    IF Field.Class = Field.Class::Normal THEN
      TargetFieldRef.VALUE := SourceFieldRef.VALUE;
  END;
END;
IF NOT TargetRecRef.INSERT THEN
  TargetRecRef.MODIFY;


Gruss

19. März 2007 18:40

Das Feldweise kopieren kenn ich, und hab es auch im Einsatz, aber das dauert halt ungleich länger.

Trotzdem vielen Dank.

19. März 2007 23:40

wenn das kopieren nicht unbedingt über RecRef sein muss, sondern auch mit einer normalen Record Variablen sein kann, dann schau dir doch mal die Funktion Transfercontents in der Codeunit 406 an.
Das ist die Kopierfunktion aus der Einrichtungscheckliste.
Wenn du mehrere Tabellen kopieren willst, kannst du dich ziemlich genau an die Funktion halten, bei nur einer kannst du auch vereinfachen.

20. März 2007 09:14

RecordRef wäre schon optimal. Das ganze soll recht variabel sein und ich kann daher nicht für jede Tabelle ausprogrammieren.

20. März 2007 09:54

Tja dann hast du wohl Pech gehabt.
Ich glaube kaum, dass die Entwickler in Dänemark so umständlich Tabelle für Tabelle ausprogrammiert hätten, wenn es anders genausoschnell oder gar schneller ginge. Wie du ja sagst, ist das feldweise kopieren mit recref deutlich langsamer.
Also entweder langsam programmieren und schnell kopieren.
oder langsam kopieren und dafür schnell fertig mit dem programmieren.

Wenn ein Teil der Tabellen schon von der oben erwähnten Codeunit erschlagen werden, dann erweitere diese Funktion einfach um deine restlichen Tabellen.

20. März 2007 10:01

da muß ich mich wohl mit abfinden :-(

mal schauen, ob sich die SQL Migrationscodeunit missbrauchen lässt um solchen Code automatisch zu generieren.