[gelöst] Report Geburtstagsliste

9. Dezember 2010 16:33

Report Geburtstagsliste würde ich gerne ein wenig ändern.

Folgendes habe ich vor:
Falls am heutigen Tag jemand Geburtstag hat, so soll eine Meldung mit bestimmten Textinhalt auftauchen und natürlich der Name auftauchen für denjenigen (oder auch für mehrere).
Dieser Report sollte dann automatisch beim öffnen des Programms gesartet werden.

Jetzt mein erster Ansatz:
Im OnAfterGetRecord hatte versucht nur eine Meldung auszugeben, falls üebrhaupt jemand Geburtstag hat.
Code:
IF "Employee/T"."Date of birth" = today then
message ('wieder ein Geburtstagskind');

Leider passiert hier schon garnichts, wieso?
Kann mir jemand auch einen Tip geben wie man das andere umsetzen kann, danke.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von misterelektro1981 am 10. Dezember 2010 11:33, insgesamt 1-mal geändert.

Re: Report Geburtstagsliste

9. Dezember 2010 16:57

Nehmen wir an, du hast am 09.12.1981 Geburtstag,

Heute ist der 09.12.2010.

Natürlich sind diese beiden Daten nicht gleich, oder? ;-)

Tipp: Ich würd mit DATE2DMY arbeiten.

Re: Report Geburtstagsliste

9. Dezember 2010 17:03

Das ist mir soeben aufgefallen,

wie kann ich denn das Jahr abschneiden wenn ich mit today arbeiten möchte?

Re: Report Geburtstagsliste

9. Dezember 2010 17:06

Nicht gesehen?
Natalie hat geschrieben:Tipp: Ich würd mit DATE2DMY arbeiten.

Re: Report Geburtstagsliste

9. Dezember 2010 17:17

Hallo Natalie,

stimmt hatte ich wirklich übersehen :idea:

Jetzt habe ich es mal versucht damit umzusetzen und stoße dann mit folgendem Code im OnPreDataItem auf eine Fehlermeldung.

Code:
d =: today;
if "Employee/T"."Date of birth" = DATE2DMY (d,1,2) then
message ('Test');


Ein ':=' ist ein Teil der Syntax, wenn Sie eine Zuweisung durchführen.

Was mache ich nun schon wieder falsch????

Re: Report Geburtstagsliste

9. Dezember 2010 17:23

misterelektro1981 hat geschrieben:Was mache ich nun schon wieder falsch????

Du musst die Funktion für beide Daten nutzen ... Das, was rauskommt, vergleichen.
Im Übrigen: hast du dir die Onlinehilfe gar nicht angesehen zu DATE2DMY?

Re: Report Geburtstagsliste

9. Dezember 2010 17:30

Alternativ ginge hier auch der Vergleich über FORMAT, also z.B.:

Code:
IF FORMAT("Employee/T"."Date of birth",0,'<Day,2>.<Month,2>') = FORMAT(TODAY,0,'<Day,2>.<Month,2>') THEN
...



Gruß

Alex

Re: Report Geburtstagsliste

9. Dezember 2010 17:31

Was natürlich eleganter ist, da es ohne Variablen auskommt :-)

Re: Report Geburtstagsliste

10. Dezember 2010 08:51

Vielen dank meto89, es klappt wunderbar und ich kann mir nun einen beliebigen Text anzeigen lassen.

@ Natalie:
Natürlich habe ich in der Onlinehilfe nachgeschaut. aber wie das so ist, als nichtprogrammieren ist es (für mich zumindestens) schwer da durchzublicken.

Jetzt habe ich noch 2 Sachen.
Wie bekomme ich den Text, des/der zugehörigen Geburtstagskindes/r in die Message und wie bekomme ich beim ausführen das Reports direkt die Anzeige des Textes ohne vorher auf Seitenansicht gehen zu müssen?
Wie starte ich den Bericht automatisch beim starten des Programms?

Re: Report Geburtstagsliste

10. Dezember 2010 11:03

Wenn du mit Text z.B. den Namen meinst oder sonstige Felder in der Tabelle kannst du das so machen:
Code:
MESSAGE('Heute hat %1 %2 Geburtstag.',"Employee/T".Vorname,"Employee/T".Nachname);


Da du die Seitenansicht soweit ich das verstanden habe sowieso nicht nutzt, solltest du in die Eigenschaften des Reports gehen (leeres DataItem) und dort "ProcessingOnly" auf Yes stellen. Dann hat der Report auch keine Seitenansicht mehr, sondern nur noch einen OK-Button.

Um zu erreichen, dass die Request Form nicht mehr geöffnet wird, musst du beim Aufruf des Reports angeben, dass diese nicht angezeigt werden, z.B. so:
Code:
REPORT.RUN(50000, FALSE);

Für 50000 musst du hier deine Report ID angeben.

Die Codeunit 1 wird immer beim Öffnen eines Mandanten aufgerufen. Hier kannst du den Aufruf des Reports in die Funktion "LogInStart" integrieren.

Re: Report Geburtstagsliste

10. Dezember 2010 11:21

Vielen dank für die Hilfe.

Es klappt schon prima, nur habe ich ein Problem mit dem nichtanzeigen der request Form.
Ich habe den Code Report.RUN(50058, false) in den OnInitReport Trigger gepackt.

Nun erscheint folgende Meldung:
Sie haben nicht genug Stackspeicher, um diese Aktivität auszuführen.

Diese Situation kann aufgrund der Verwendung rekursiver Funktionsaufrufe eintreten. Setzen Sie sich mit Ihrem Systemadministrator in Verbindung, wenn Sie Unterstützung benötigen.

Wie kann ich diese Meldung beseitigen?

Re: Report Geburtstagsliste

10. Dezember 2010 11:24

Der Code "REPORT.RUN(50058,FALSE);" ruft den Report ohne Request Form auf. Diesen Code musst du in die Codeunit 1 integrieren, nicht im Report selbst.

Momentan versucht dein Report jedes Mal beim Starten sich selbst nochmal zu starten :-)

Re: Report Geburtstagsliste

10. Dezember 2010 11:29

misterelektro1981 hat geschrieben:Nun erscheint folgende Meldung:
Sie haben nicht genug Stackspeicher, um diese Aktivität auszuführen.

Diese Situation kann aufgrund der Verwendung rekursiver Funktionsaufrufe eintreten. Setzen Sie sich mit Ihrem Systemadministrator in Verbindung, wenn Sie Unterstützung benötigen.

Wie kann ich diese Meldung beseitigen?

Mit mehr Speicher und einem passenden Betriebssystem kannst du sie zumindest verzögern :mrgreen:

Re: Report Geburtstagsliste

10. Dezember 2010 11:33

Perfekt, danke!!! :idea: