[gelöst] Filter in Request-Form vorbelegen?

6. Januar 2010 17:08

Hallo,

ich habe in einer Request-Form weitere Felder hinzugefügt, die grundsätzlich angezeigt werden sollen. So weit so gut.
Nun möchte ich bei manchen Feldern einen bestimmten Filter vorbesetzen. Ist das möglich, und wenn ja: wie?
Also zum Beispiel die USERID als Filterwert für ein bestimmtes Feld vorbelegen.

Gruß
Turm
Zuletzt geändert von Turm am 7. Januar 2010 19:42, insgesamt 1-mal geändert.

Re: Filter in Request-Form vorbelegen?

6. Januar 2010 20:22

Dir ist vielleicht aufgefallen, dass wenn du aus einem bestimmten Auftrag heraus (Karte) den Report Auftragsbestätigung aufrufst, dann ist dieser mit dem Auftrag vorbelegt.
Dies geht, weil die Tabelle Sales Header gleichzeitig das erste DataItem des Reports ist.
Beispiel:
Code:
SalesHeader.SETRANGE("Document Type", SalesHeader."Document Type"::Order);
SalesHeader.SETRANGE("No.", 'AU0815');
// und evtl. noch weitere Filter auf SalesHeader
REPORT.RUN(REPORT::"Order Confirmation", SalesHeader);

-> Ergibt in der Request Form eine Vorbelegung für die Felder Belegart und Nr. // und evtl. weitere Felder

Du siehst, dass REPORT.RUN nur eine Recordvariable aufnehmen kann(=1. DataItem). Sollen aber noch andere DataItems mit Filtern vorbelegt werden (z.B. alle AuftragsZEILEN der Art Artikel), so ist dies zwar im OnPreDataItem-Trigger des DataItems SalesLine möglich, ABER beim Öffnen der Request Form ist dieser Filter für den Benutzer nicht SICHTBAR.
Auch im ersten DataItem ist ein Filter, der nicht vor REPORT.RUN gesetzt worden ist (aber z.B. in OnPreDataItem-Trigger), nachher nicht sichtbar.

Re: Filter in Request-Form vorbelegen?

7. Januar 2010 19:42

@Natalie
Danke. Das ist in meinem aktuellen Fall eine akzeptable Lösung.

Gruß
Turm

Re: [gelöst] Filter in Request-Form vorbelegen?

4. Juni 2010 13:41

Hallo!

Ich habe folgenden Bericht abgeändert und unter 50000 gespeichert:
99000765 Prod. Order - Mat. Requisition FA-Materialbedarf
Wie kann ich bei einem Aufruf über einen Button den Filter vorbelegen.

Der Code steht oben, aber die Frage ist, wo der genau rein muss. Das habe ich leider nicht verstanden.

Im Code der Request Form? An welcher Stelle?
Im Code des Reports im 1. Dataitem Production Order? An welcher Stelle?
Im Code des Buttons (geht leider nicht)?

Danke

Re: [gelöst] Filter in Request-Form vorbelegen?

4. Juni 2010 15:00

Beim Button.

Die Sache ist die: wenn du einen Filter auf der Request-Form vorbelegen willst, muss der Record mit dem ersten DataItem übereinstimmen.

Hier nochmal der Code von Natalie mit mehr Kommentaren
Code:
// SalesHeader entspricht dem ersten DataItem vom Report Order Confirmation
// Hier werden die Filter vorgegeben
SalesHeader.SETRANGE("Document Type", SalesHeader."Document Type"::Order);
SalesHeader.SETRANGE("No.", 'AU0815');
// Hier wird der Bericht aufgerufen; der zweite Parameter ist unsere vorgefilterte Record-Variable
REPORT.RUN(REPORT::"Order Confirmation", SalesHeader);


Ich hoffe, dass kann dir weiterhelfen.

Gruß,
Sebastian

Re: [gelöst] Filter in Request-Form vorbelegen?

4. Juni 2010 15:15

Danke, dass es der Button ist, das ist logisch, weil der ja die Request-Form auslöst.

Nur stehen mir beim Button im Design-Modus mit rechter Maustaste nur

Ausschneiden, Kopieren, Properties zur Verfügung.

Das Feld "C/AL-Code" ist, warum auch immer, inaktiv. Auch darf ich keine Codeunits schreiben, das würde bei unserer AME 6000 extra kosten und lohnt sich nicht.

Wenn mir jemand einen Tipp hat, wie ich den Code dennoch hinter den Button bekomme, darf er es gerne sagen. Wie der Code auszusehen hat, ist hingegen ziemlich klar.

Re: [gelöst] Filter in Request-Form vorbelegen?

4. Juni 2010 16:31

tortelinski hat geschrieben:Das Feld "C/AL-Code" ist, warum auch immer, inaktiv.

Grund ist die Lizenz. Deine Lizenz erlaubt es nicht C/AL-Code von Forms zu editieren.

Du kannst also nur die Properties des Buttons ändern. Dumm ist auch, dass du keine Codeunits schreiben kannst. Denn sonnst hätte ich dir vorgeschlagen eine Codeunit bei Klick des Buttons aufzurufen (über Property). Und die Codeunit selbst startet dann den Report mit den entsprechenden Filtern.

Meine letzte Notlösung wäre jetzt also den Bericht selbst anzupassen. Du kannst die OptionsForm der RequestForm so anpassen, dass dort Felder erscheinen um zu filtern. Dort können dann auch die Werte vorbelegt werden. Das ist definitiv nicht die schönste Lösung, aber ich glaube, wenn man es richtig macht zweckmäßig.

Gruß,
Sebastian