[gelöst] Neueste Bemerkung zu einem Objekt anzeigen

20. Juli 2011 13:26

Hallo zusammen,

bin grad mal neu und hab gleich ein kleines Problem.
Leider bin ich noch ziemlich neu in Dynamics und brauche mal Eure Hilfe.

Ich möchte in einem Report zu einer Objektnummer nur die neueste Bemerkung anzeigen lassen.

Ich habe versucht im Trigger OnPreDataItem() folgenden Code umzusetzen:

Code:
IF RecordNo <> "No." THEN
  BEGIN
  RecordNo := "No.";
  END
    ELSE
  BEGIN
IF RecordDate > Date THEN
    BEGIN
      CurrReport.SKIP;
    END;
RecordDate := Date;
EXIT;
END;
END;


Im Moment scheitere ich vermutlich daran, dass das Datum aufsteigend sortiert wird, und ich das Datum auf kleinere prüfe.

Gibt es eine Möglichkeit die Sortierung für "No." Aufsteigund und für "Date" absteigend fest zu legen?

Vielen Dank im Voraus.
Zuletzt geändert von michaelp am 17. August 2011 11:39, insgesamt 1-mal geändert.

Re: Neueste Bemerkung zu einem Objekt anzeigen

20. Juli 2011 13:37

Herzlich willkommen in unserem Forum!

Ich begrüße es sehr, dass du schon in deinem allerersten Beitrag den code-tag eingesetzt hast :-)
Was ich gerne ergänzen würde, wäre die richtige (NAV-konforme) Formatierung deines Codes, denn dann sehen auch andere sofort, was da ausgeführt wird:

Code:
IF RecordNo <> "No." THEN BEGIN
  RecordNo := "No.";
END ELSE  BEGIN
  IF RecordDate > Date THEN BEGIN
      CurrReport.SKIP;
  END;
  RecordDate := Date;
  EXIT;
END;
END;

Demnach ist schonmal ein END zuviel drin? Naja, wird wohl eher ein etwas großzügiger Ausschnitt aus noch mehr Quelltext sein.

Aber nun zu deiner eigentlichen Frage:
michaelp hat geschrieben:Gibt es eine Möglichkeit die Sortierung für "No." Aufsteigund und für "Date" absteigend fest zu legen?

Grundsätzlich unterstützt NAV keine Sortierschlüssel, die je nach Feld mal an- und mal absteigend sind.
Man müsste sich bei sowas zur Not mit einer neuen Tabelle behelfen, die z.B. ein Integer-Feld als alleiniges Primärschlüsselfeld hat, die Tabelle entsprechend füllen und dann diese Tabelle statt der originären durchlaufen (und drucken).

Wenn eine Bemerkung mehrzeilig sein kann und in jeder auch ein Datum enthalten ist, wird dein Code noch nicht richtig funktionieren: Du musst mit einem separaten Tabellendurchlauf erst das neueste Datumherausfinden unddann im zweiten Durchlauf auf alle Datensätze filtern, die diesem Datum entsprechen.

Re: Neueste Bemerkung zu einem Objekt anzeigen

21. Juli 2011 13:49

Vielen Dank,

Da hab ich mir wohl für den Anfang einen ganz schönen Brocken ausgesucht, da dies mein erster Report sein sollte.
Ich denke ich werde erstmal ein paar andere Reports machen um etwas Erfahrung zu sammeln.

Danke für den Tipp mit der Tabelle.

Es hat nur quasi die "Headline" ein Datum. alle anderen Datumfelder sind leer, bis wieder ein neuer Abschnitt kommt.

Ich werde den Report mal in ein paar Tagen nochmal angehen.

Vielen Dank nochmal.

Re: Neueste Bemerkung zu einem Objekt anzeigen

17. August 2011 11:38

Hallo zusammen,

sollte es jemanden interessieren, habe ich hier meine Lösung zum Anzeigen der aktuellsten Bemerkungen zu einem Objekt:

Code:
FINDLAST;

REPEAT

IF "Comment Line"."No." <> ObjectNo THEN BEGIN
  IF FORMAT(Date) <> ''  THEN
    Skip := TRUE
  ELSE
    Skip := FALSE;
  MARK:= TRUE;
END
ELSE
  IF Skip = FALSE THEN
    IF FORMAT(Date) <> ''  THEN BEGIN
      Skip := TRUE;
      MARK:= TRUE;
    END;


ObjectNo := "No.";

UNTIL NEXT(-1) = 0;

MARKEDONLY:= TRUE;


Habe es nun doch ohne eine weitere Tabelle versucht.
In dieser Lösung gehe ich davon aus, dass die größte Zeilennummer auch gleichzeitig das größte Datum, bzw. kein Datum, hat.
Bei mir funktioniert es.