[Gelöst] RecordRef und CHANGECOMPANY

9. Juli 2008 10:54

Hallo zusammen,

ich hänge da an einem Problem, bei dem ich derzeit nicht mehr weiterkomme.

Folgendes Codestück bereitet mir Probleme:
Code:
      RecordReference.OPEN("Primary Table No.", FALSE, "Nav Company");
      IF RecordReference.GET("Primary Table Record ID") THEN
        ...


Die Variable "Nav Company" enthält den Namen des Mandanten, auf den die Funktion angewendet werden soll. Doch leider scheint das GET sich anscheinend nicht für den Mandantenwechsel zu interessieren. Er verursacht einen ERROR, wenn der Datensatz, der mit "Primary Table Record ID" eindeutig identifiziert ist, nicht im aktuellen Mandanten vorhanden ist.

Hat jemand schon mal ein ähnliches Problem gehabt? Oder mache ich da etwas falsch?

Vielen Dank!

9. Juli 2008 11:06

Hallo,

kann es sein das Du nicht die RecordID (enthält Tabellennummer und die werte des Primärschlüssels für den Datensatz), sondern einfach einen Wert eines Einfachen Primärschlüssels z.b. '10000' der Tabelle 18 Customer übergibst.

Also die Record ID ist nicht ein Primärschlüsselwert, wie bei einem Record.GET!

9. Juli 2008 12:30

Eigentlich nicht. Ich habe mal ein Bsp. erstellt, mit dem man das Problem nachstellen kann:

Code:
RecRef.OPEN(287, FALSE, 'Mandant 1');
IF RecRef.FIND('-') THEN
  BEGIN
    CodeunitParamsTemp."Primary Table No." := 287;
    CodeunitParamsTemp."Primary Table Record ID" := RecRef.RECORDID;
    CodeunitParamsTemp."Nav Company" := 'Mandant 1';

    RecordReference.OPEN(CodeunitParamsTemp."Primary Table No.", FALSE, CodeunitParamsTemp."Nav Company");
    IF RecordReference.GET(CodeunitParamsTemp."Primary Table Record ID") THEN BEGIN
    END ELSE
      ERROR('RecRef "%1" nit da!', CodeunitParamsTemp."Primary Table Record ID");
  END;


Bei mir findet RecRef in der Tabelle 287 einen Eintrag im Mandanten 1 über dessen Primärschlüssel im Mandant 2 nichts gefunden wird. Dadurch schlägt dann das "RecordReference.GET" fehl.

9. Juli 2008 13:16

Hallo,

es scheint alsob der Companyname aus der die RecordID stammt stehe mit drinnen.

Lösung:

Code:
RecRef.OPEN(287, FALSE, COMPANYNAME);
IF RecRef.FIND('-') THEN BEGIN
  TabNo := 287;
  RecID := RecRef.RECORDID;
  Comp := 'Mandant 2';

  RecordReference.OPEN(TabNo, FALSE, Comp);
  RecRef2 :=  RecID.GETRECORD;
  RecordReference.SETPOSITION(RecRef2.GETPOSITION());
  IF RecordReference.FIND('-') THEN BEGIN
  END ELSE
    ERROR('RecRef "%1" nit da!', RecRef.GETPOSITION());
END;


Dann klapp's auch mit dem Nachbarn ;-)

9. Juli 2008 13:38

Hallo DGR,

vielen Dank für die Unterstützung. So funktioniert es nun!