[gelöst] Aktuellen Rec der Form einem Report mitgeben

22. Dezember 2006 10:40

Gute Morgen,

hab da irgenwo einen Denkfahler und hoffe auf Hilfe :-D .

Hab im VK-Aufträge einen Button für einen extra Report, dieser wir über die Properties /RunObject ausgeführt.
Habe aber leider keinen Bezug zum aktuellen in der Form angezeigten Datensatz.

Wie bekomme ich das hin?

Hab schon im on Push trigger mit setfilter/setrange rumprobiert, aber irgendwie bekomme ich das nicht hin.
Und vom Standard hab ich nix zum kopieren gefunden.

Ich sag schonmal DANKE im voraus.

Nadine :-)
Zuletzt geändert von nini am 22. Dezember 2006 11:41, insgesamt 1-mal geändert.

22. Dezember 2006 10:53

[Beitrag aus dem Forum Dynamics NAV Tipps & Tricks nach Dynamics NAV 4.xx verschoben, da es eine Frage (und kein Tipp oder Trick) darstellt.]

Gruß, Mikka
MSDynamics.de-Team

22. Dezember 2006 10:57

Hallo Nini,

hast du es schon so Probiert?
Auf dem Push-Trigger:
Erstelle eine Zusätliche Record-Variable, diese auf den gewünschten Datensatz Filtern und an den Report übergeben.
Code:
lr_VerkLiefZeile.SETRANGE(lr_VerkLiefZeile."Belegnr.","Nr.");
REPORT.RUNMODAL(50050,FALSE,TRUE,lr_VerkLiefZeile);


In der C/SIDE Hilfe wird der Befehl gut Erklärt.
Gruß Mikka

22. Dezember 2006 11:24

Super Danke :-D

...nur das FALSE/TRUE sind vertauscht ;-)

mit der C/SIDE Hilfe komm ich manchmal nicht so gut zurecht....:-/

22. Dezember 2006 11:32

Die relativ neue Anweisung SETRECFILTER macht das Leben einfacher :
Code:
Customer.SETRECFILTER;
REPORT.RUN(REPORT::"An Example Report",FALSE,FALSE,Customer);


Mit SETTABLEVIEW kann auch die Sortierung übergeben werden.

22. Dezember 2006 11:42

Irgendwas stimmt mit SETRECFILTER nicht ... Rufe ich den Befehl im Verkaufsauftrag (Sales Header) auf, um von dort aus einen einen Report aufzurufen, setzt er No. auf gleich leer und Belegart = Angebot ...

Habe ich da was missverstanden?

22. Dezember 2006 11:52

Hi Kowa,

also deine Lösung lübbt nicht so recht bei mir....

...mal was anderes dazu, wie kann ich das ändern, dass man aus der Seitenansicht drucken kann??
Verstehe sowieso nicht wieso man dass nicht kann...

LG aus dem sonnigen Kölle

Nadine :-)

22. Dezember 2006 12:03

@ Natalie

...das hatte ich bei mir auch... ^^

22. Dezember 2006 12:14

Offenbar dürfen wir die Online-Hilfe nicht zu wörtlich nehmen ... Bin auf die Antwort gespannt; ist bestimmt gaaanz einfach ...

22. Dezember 2006 12:18

Nini hat geschrieben:...mal was anderes dazu, wie kann ich das ändern, dass man aus der Seitenansicht drucken kann??
Verstehe sowieso nicht wieso man dass nicht kann...


Das liegt an CurrReport.PREVIEW, sobald dieser Befehl ausgeführt wird, kann aus der Seitenansicht nicht geduckt werden.
(Wenn direkt gedruckt wird, wird zu diesen Auftrag der Seitenzähler hochgezählt!)
Gruß Mikka

22. Dezember 2006 12:25

...und wo finde ich den CurrReport.PREVIEW?
kann man den denn einfach auskommentieren?

...es gibt nämlich ein paar Reports wo man aus der Seitenansicht drucken kann...
;-)

22. Dezember 2006 12:35

Auf den DataItems, einfach auf den Triggern den Code anschauen.
z.B. Report Nr. 205 auf m "CopyLoop" DataItem -->Trigger OnPostDataItem
Code:
IF NOT CurrReport.PREVIEW THEN
  SalesCountPrinted.RUN("Sales Header");


Allerdings würde ich nicht einfach "drauflos" die Einträge löschen, da dieses Ihre Berechtigung haben.
Falls z.B. eine Rechnung gedruckt wurde, wird zu dieser Rechnung der Seitenzähler hochgezählt.
Wird erneut gedruckt, erscheint "Kopie" auf der Rechnung, da es nur einen Originalbeleg geben darf!
Gruß Mikk

22. Dezember 2006 12:37

...möchte dass ja auch nur für "interne" bzw. inoffizielle Reps machen..
danke :-)

22. Dezember 2006 12:43

Innerhalb der Form die Recordvariable bei SETRECFILTER weglassen.
Einen Auftragsbutton mit OnPushTrigger Code zum drucken geht so :

Code:
SETRECFILTER;
REPORT.RUN(REPORT::"Order Confirmation",TRUE,FALSE,Rec);


bzw. für Sofortdruck
Code:
SETRECFILTER;
REPORT.RUN(REPORT::"Order Confirmation",FALSE,FALSE,Rec);

22. Dezember 2006 12:48

IF NOT CurrReport.PREVIEW THEN
SalesCountPrinted.RUN("Sales Header");

hab ich grade mal auskommentiert, aber drucken will der immer noch nicht aus der seitenansicht.... :-(

@Kowa
lübbt...danke auch dir :-)

22. Dezember 2006 13:21

Kowa hat geschrieben:Innerhalb der Form die Recordvariable bei SETRECFILTER weglassen.
Einen Auftragsbutton mit OnPushTrigger Code zum drucken geht so :

Code:
SETRECFILTER;
REPORT.RUN(REPORT::"Order Confirmation",TRUE,FALSE,Rec);


Sag ich doch, ganz einfach *g*

Aber eine Frage hätt' ich noch:
Macht es einen (wichtigen) Unterschied, wenn wir nicht direkt mit dem Rec, sondern dessen Kopie arbeiten?
Also so:
Code:
locSalesHeader := Rec;
locSalesHeader.SETRECFILTER;
REPORT.RUN(REPORT::"Order Confirmation",TRUE,FALSE,locSalesHeader);


Ich frage mich nämlich, welche Auswirkungen das Setzen dieses Filters auf unseren Rec hat ...

22. Dezember 2006 14:52

SETRECFILTER filtert die Tabelle auf den aktiven Datensatz ( Feldwerte in den Primärschlüsselfeldern) in der Card Form. Da die Form diesen ja gerade anzeigt, sitzt sie dann fest auf dieser Belegnummer. Entweder hinterher ein
Code:
SETRANGE("No.")
(um das zweite Primärschlüsselfeld wieder freizugeben) oder wie beschrieben mit der Kopie arbeiten. Wenn der Rec in der Weiterverarbeitung modifiziert wird z.B. Druckzähler, ist Kopieren ohnehin meist unvermeidlich. Wenn allerdings noch weitere Filter ( Datumsfilter etc. ) vorhanden sind , die im Druck relevant sind, muss mit
Code:
locSalesHeader.COPY(Rec)
gearbeitet werden. Bei
Code:
locSalesHeader := Rec
gehen diese verloren, da hier nur die Feldwerte kopiert werden.