[Gelöst] Report bricht nach OnAfterGetrecord ab?

16. Juni 2009 08:30

Hallo Leute,

ich habe ein Problem mit einem Resport, der zwei Tabellen miteinander abgleichen soll.
Ist ein Barcode vorhanden (recAPP), der in der anderen Tabelle (recDMS) ebenso vorhanden ist, sollen diverse Werte geschrieben werden.

Aufruf des Reports:
Code:
Rec.RESET;
Rec.SETCURRENTKEY(zugeordnet);
Rec.SETRANGE(zugeordnet,FALSE);
repDMS.SETTABLEVIEW(Rec);
repDMS.RUNMODAL;


OnAfterGetRecord-Trigger im Report:
Code:
recAPP.RESET;
recAPP.SETCURRENTKEY("Barcode-Nummer");
recAPP.SETRANGE("Barcode-Nummer", recDMS."Barcode-Nummer");

IF(recAPP.FINDFIRST) THEN BEGIN
    recAPP."Dok-ID EVITA" := recDMS."Dok-ID";
    recAPP.MODIFY;

    // APP -> Zwischentabelle
    recDMS."APP-ID" := recAPP."Entry No.";
    recDMS."Mandanten-ID" := recAPP."Global Dimension 1 Code";
    recDMS."Kontakt-Nr." := recAPP."Contact No.";

    // Wenn Zuordnung erfolgreich, dann
    recDMS.zugeordnet := TRUE;
    recDMS."Zugeordnet am" := TODAY;

    recDMSmod := recDMS;
    recDMSmod.MODIFY;
END;


Jetzt bricht der Report jedes Mal ab, nachdem er den ersten Satz gefunden hat, den er zuordnen kann. Woran liegt das? Ich habe selbst leider noch nicht viel Erfahrung mit NAV bzw. C/SIDE und würde mich über jede hilfreiche Antwort freuen.
Der Debugger hat mir auch nicht wirklich geholfen..


Gruß
Zuletzt geändert von globalnano am 10. Juli 2009 11:53, insgesamt 1-mal geändert.

Re: Report bricht nach OnAfterGetrecord ab?

16. Juni 2009 08:39

Hi,

ist das DataItem in dem du programmierst eines der beiden verwendeten?
Also recAPP oder recDMS?
Wenn es recDMS ist, versuch es doch einmal damit erst recDMSmod.GET(recDMS.#PKEY#), und anschliessend recDMSmod statt recDMS zu verändern.

Re: Report bricht nach OnAfterGetrecord ab?

16. Juni 2009 08:43

Ist recApp der Record des Dataitems des OnAfterGetRecord-Triggers?
Wenn ja, dann würdest du erstmal alle Filter lösen (welche du beim Aufruf des Reports gesetzt hast) und dann einen SETRANGE setzen. Wahrscheinlich findest du danach keinen Datensatz mehr.

Mit Abbrechen meinst du eine Fehlermeldung oder er läuft nur einen Datensatz durch?

Re: Report bricht nach OnAfterGetrecord ab?

16. Juni 2009 08:46

Danjo hat geschrieben:Hi,

ist das DataItem in dem du programmierst eines der beiden verwendeten?
Also recAPP oder recDMS?
Wenn es recDMS ist, versuch es doch einmal damit erst recDMSmod.GET(recDMS.#PKEY#), und anschliessend recDMSmod statt recDMS zu verändern.

Dann könnte ich auch komplett auf recDMSmod verzichten oder? Ist recDMSmod überhaupt notwendig?
Wie sähe das denn deiner Meinung nach aus?


Achja, DataItem ist recDMS

Sebastian Pfliegel hat geschrieben:Mit Abbrechen meinst du eine Fehlermeldung oder er läuft nur einen Datensatz durch?
Letzteres.

Re: Report bricht nach OnAfterGetrecord ab?

16. Juni 2009 09:10

Liegt´s vielleicht daran:
zuerst filterst du auf Zugeordnet=false:
globalnano hat geschrieben:Rec.RESET;
Rec.SETCURRENTKEY(zugeordnet);
Rec.SETRANGE(zugeordnet,FALSE);
repDMS.SETTABLEVIEW(Rec);
repDMS.RUNMODAL;


Im Report selbst änderst du das dann auf ggf. true:
globalnano hat geschrieben: // Wenn Zuordnung erfolgreich, dann
recDMS.zugeordnet := TRUE;
recDMS."Zugeordnet am" := TODAY;


Das ändert deine Reihenfolge. Nach einem true-gesetzten Datensatz wird keiner mit zugeordnet=false mehr kommen, und der Report ist fertig.

Re: Report bricht nach OnAfterGetrecord ab?

16. Juni 2009 09:22

McClane hat geschrieben:Das ändert deine Reihenfolge. Nach einem true-gesetzten Datensatz wird keiner mit zugeordnet=false mehr kommen, und der Report ist fertig.

Aber ich änder ja nur den "recDMSmod" (welcher ein Record auf die recDMS-Tabelle ist)...also sollte das eigentlich nicht sein können oder?

Re: Report bricht nach OnAfterGetrecord ab?

16. Juni 2009 09:30

globalnano hat geschrieben:Aber ich änder ja nur den "recDMSmod" (welcher ein Record auf die recDMS-Tabelle ist)...also sollte das eigentlich nicht sein können oder?


Nein, wie McClane beschrieben hat (unterer Codeabschnitt), änderst du auch recDMS. Und das ausgerechnet auf den Feldern, nach denen du den Report filterst.

Was du brauchst, ist eine zweite recDMS-Variable, Beispiel NewDMS:

Code:
...
    NewDMS := recDMS; // <-- neue Zeile
    // ab hier neue Variable
    // APP -> Zwischentabelle
    NewDMS."APP-ID" := recAPP."Entry No.";
    NewDMS."Mandanten-ID" := recAPP."Global Dimension 1 Code";
    NewDMS."Kontakt-Nr." := recAPP."Contact No.";

    // Wenn Zuordnung erfolgreich, dann
    NewDMS.zugeordnet := TRUE;
    NewDMS."Zugeordnet am" := TODAY;

    // NewDMSmod := recDMS; // <-- diese Zeile muss raus!
    NewDMSmod.MODIFY;

Re: Report bricht nach OnAfterGetrecord ab?

16. Juni 2009 09:30

Mach doch mal alle Änderungen auf dem recDMSmod, so wie Danjo das vorgeschlagen hat.

Wieder-mal-zu-langsam-Edit: Oder so, wie es Natalie vergeschlagen hat :wink:

Re: Report bricht nach OnAfterGetrecord ab?

16. Juni 2009 13:49

Hey, danke Leute. :-)
Hat funktioniert wie beschrieben. Und ich bin wieder ein Stückchen schlauer.