[gelöst] Section Code auf DataItem

23. Januar 2012 15:42

Wie schreibt man folgenden Section Code als DataItem Code am einfachsten?

Code:
CurrReport.SHOWOUTPUT(
  (
  ("Job Structure Line".Type = Type::Item) AND
  ("Job Structure Line".Level = 2)AND
  ("Job Structure Header"."Ending Date" <> 0D)
  )
  OR
  (
  ("Job Structure Line".Type = Type:: Resource) AND
  ("Job Structure Line"."No." = '715')AND
  ("Job Structure Header"."Ending Date" <> 0D)
  )
  OR
  (
  ("Job Structure Line".Type = Type:: Resource) AND
  ("Job Structure Line"."No." = '740')AND
  ("Job Structure Header"."Ending Date" <> 0D)
  )
  OR
  (
  ("Job Structure Line".Type = Type:: Resource) AND
  ("Job Structure Line"."No." = '730')AND
  ("Job Structure Header"."Ending Date" <> 0D)
  )
  OR
  (
  ("Job Structure Line".Type = Type:: Resource) AND
  ("Job Structure Line"."No." = '710')AND
  ("Job Structure Header"."Ending Date" <> 0D)
  )
  );
Zuletzt geändert von misterelektro1981 am 24. Januar 2012 11:17, insgesamt 1-mal geändert.

Re: Section Code auf DataItem

23. Januar 2012 15:47

Mit einzelnen DataItems.

Re: Section Code auf DataItem

24. Januar 2012 10:45

HattrickHorst hat geschrieben:Mit einzelnen DataItems.

Wenn du keine Lust hast über eine Anfrage nachzudenken, dann antworte doch auch nicht.

@misterelektro:

Wenn ich das richtig verstanden habe, möchtest du die Steuerung des Andrucks ins DataItem selbst verschieben. Dabei müssen ja praktisch die Bedingungen umgekehrt werden, da du bisher ja gesagt hast, wann gedruckt werden soll und du nun festlegst, wann der Datensatz übersprungen werden soll. Dann kannst du folgenden Code verwenden:
Code:
IF ("Job Structure Header"."Ending Date" = 0D) OR NOT ("Job Structure Line".Type IN ["Job Structure Line".Type::Item,"Job Structure Line".Type::Resource]) THEN
  CurrReport.SKIP;

IF ("Job Structure Line".Type = Type::Item) AND ("Job Structure Line".Level <> 2) THEN
  CurrReport.SKIP;

IF ("Job Structure Line".Type = Type:: Resource) AND NOT ("Job Structure Line"."No." IN ['710','715','730','740'])) THEN
  CurrReport.SKIP;

Natürlich könnte man die Bedingungen auch insgesamt kombinieren, aber dann würde die Lesbarkeit leiden, wie ich finde. Deinen SHOWOUTPUT-Befehl hätte man auch z.B. so kürzen können:
Code:
CurrReport.SHOWOUTPUT(
  ((("Job Structure Line".Type = "Job Structure Line".Type::Item) AND ("Job Structure Line".Level = 2))
  OR
  (("Job Structure Line".Type = "Job Structure Line".Type:: Resource) AND ("Job Structure Line"."No." IN ['710','715','730','740'])))
  AND
  ("Job Structure Header"."Ending Date" <> 0D)
);

Alles unter einem gewissen Vorbehalt, da ich es nicht in NAV getestet habe.

EDIT: Da du offensichlich einen Trigger des "Job Structure Line"-DataItems verwendest, kannst du diese Angabe natürlich weglassen. Dann wird's noch um einiges übersichtlicher.

Gruß
Tim

Re: Section Code auf DataItem

24. Januar 2012 11:17

Vielen Dank fürs Bemühen Tim,
so klappt es prima.

Re: Section Code auf DataItem

24. Januar 2012 12:25

Tim hat geschrieben:
HattrickHorst hat geschrieben:Mit einzelnen DataItems.

Wenn du keine Lust hast über eine Anfrage nachzudenken, dann antworte doch auch nicht.

Ich bin davon ausgegangen, daß es mehrere Sections gibt, die die restlichen Datensätze anders darstellen, da der Report ja ansonsten diverse Dinge falsch machen würde. Daraufbezogen ist meine Aussage völlig korrekt. Wenn du also keine Lust hast über Antworten nachzudenken, dann kommentiere sie auch nicht. :wink:

Außerdem weiß ich nicht, inwieweit es hilfreich sein soll, jemandem eine konkrete Lösung vorzukauen. Sicherlich kann man das mal machen, aber das eigentlich Ziel sollte doch nach einem guten, alten Spruch angelegt sein: "Give a man a fish and you feed him for a day. Teach a man to fish and you feed him for a lifetime."

http://www.msdynamics.de/viewtopic.php?f=31&t=1807