[Gelöst] Dataport ruft Dataports auf,diese durch CU Filtern?

28. März 2014 08:35

Hallo Leuts,

ich hab einen Dataport der durch DATAPORT.RUNMODAL(ID, FALSE); drei weitere Dataports aufruft. Mein Anliegen ist, wie es möglich ist einen Filter auf die Dataports zu legen (mit einem Datum, 7 Tage in der Vergangenheit), ohne das der Benutzer das Datum eingeben müsste bei jedem Dataport.

Aktiv würde man ja einfach einen Filter in der ReqForm eintragen, aber das will ich nicht, da der Export - durch einen Klick - unbewacht ausgeführt werden soll.

Liebe Grüße
Stefan
Zuletzt geändert von sfranke am 28. März 2014 13:17, insgesamt 1-mal geändert.

Re: Dataport ruft Dataports auf, diese durch CU Filtern?

28. März 2014 09:33

Hi Stefan,

schau dir einmal den Befehl SETTABLEVIEW an.
Vor dem Aufruf des jeweiligen Dataports den Filter mit Settableview setzen.

Code:
Record.SETFILTER("Posting Date", '%1..%2', TODAY-7, TODAY);
DATAPORT1.SETTABLEVIEW(Record);
DATAPORT1.RUNMODAL;


*Record sollte das Dataitem in deinem Dataport sein.

mfg,
winfy
Zuletzt geändert von winfy am 28. März 2014 14:01, insgesamt 1-mal geändert.

Re: Dataport ruft Dataports auf, diese durch CU Filtern?

28. März 2014 12:02

Lieben Dank winfy,

Jetzt muss ich nur noch rausfinden wie ich den Record referenziere :)

Hier mal das effektive Szenario, vielleicht hilft/reicht das :)

* Ich habe ein Feld angelegt in 3 Tabellen (Verkaufskopf, VerkaufsrechnungsKopf und Verkaufslieferkopf)
* Ich habe je einen Dataport angelegt um die Daten aus einer Tabelle zu exportieren. (D1, D2, D3)
* Der Dataport X ruft nun D1, D2, D3 nacheinander mit
Code:
DATAPORT.RUNMODAL(D1, FALSE);
DATAPORT.RUNMODAL(D2, FALSE);
DATAPORT.RUNMODAL(D3, FALSE);

auf.

Laut dir füge ich vor jedem DATAPORT.RUNMODAL(); jetzt
Code:
Record.SETFILTER(Buchungsdatum", '%1..%2', TODAY-7, TODAY);
DATAPORT.SETTABLEVIEW(Record);

ein.

Doch wie muss ich den Record initialisieren, wenn ich ihn auf die Tabelle: VerkaufsKopf (39? glaube) referenzieren will (für den ersten Export)? Als globale Variable, dann aber als welcher Datentyp?

Liebe Grüße
Stefan

Re: Dataport ruft Dataports auf, diese durch CU Filtern?

28. März 2014 12:22

So referenzieren wie das Dataitem in deinem Dataport.

Also Record vom DataTyp Record Subtype SalesHeader (Tabelle 36).
Den Dataport solltest du auch als Variable anlegen.

Also z.B. Dataport1 vom DataTyp Dataport.



mfg,
winfy
Zuletzt geändert von winfy am 28. März 2014 12:47, insgesamt 1-mal geändert.

Re: Dataport ruft Dataports auf, diese durch CU Filtern?

28. März 2014 12:46

Ohjea :(

Code:
// run delivery head dataports
SalesHeader.SETFILTER("Buchungsdatum", '%1..%2', TODAY-7, TODAY);
DATAPORT.SETTABLEVIEW(SalesHeader);
DATAPORT.RUNMODAL(50089,FALSE);

SalesBookingHeader.SETFILTER("Buchungsdatum", '%1..%2', TODAY-7, TODAY);
DATAPORT.SETTABLEVIEW(SalesBookingHeader);
DATAPORT.RUNMODAL(50094,FALSE);

SalesDeliveryHeader.SETFILTER("Buchungsdatum", '%1..%2', TODAY-7, TODAY);
DATAPORT.SETTABLEVIEW(SalesDeliveryHeader);
DATAPORT.RUNMODAL(50097,FALSE);


Der Code ist okay, das Problem ist er kennt "SETTABLEVIEW" anscheinend noch nicht in Navision 2.60f. Er sagt nur: "Sie haben eine undefinierte Variable angegeben. SETTABLEVIEW Definieren sie die Variable unter 'C/AL-Globale Variablen'".

Liebe Grüße
Stefan

Re: Dataport ruft Dataports auf, diese durch CU Filtern?

28. März 2014 12:52

Deklariere mal D1 bis D3 als Variablen vom Typ Dataport.
Stelle die Dataports in den Properties am Besten auch so ein, dass die RequestForm nicht angezeigt wird und in eine konkrete Datei exportiert wird.

Code:
// run delivery head dataports
SalesHeader.SETFILTER("Buchungsdatum", '%1..%2', TODAY-7, TODAY);
D1.SETTABLEVIEW(SalesHeader);
D1.RUNMODAL;

SalesBookingHeader.SETFILTER("Buchungsdatum", '%1..%2', TODAY-7, TODAY);
D2.SETTABLEVIEW(SalesBookingHeader);
D2.RUNMODAL;

SalesDeliveryHeader.SETFILTER("Buchungsdatum", '%1..%2', TODAY-7, TODAY);
D3.SETTABLEVIEW(SalesDeliveryHeader);
D3.RUNMODAL;


Alternativ könntest du auch in den Dataports eine Funktion schreiben, wobei du beim Aufruf des Dataport den Dateinamen setzt und diverse andere Parameter für den Dataport setzt. (z.B D1.SetParameter(Import/Export,Filename,UseReqForm,...) )

mfg,
winfy
Zuletzt geändert von winfy am 28. März 2014 14:00, insgesamt 2-mal geändert.

Re: Dataport ruft Dataports auf, diese durch CU Filtern?

28. März 2014 12:57

sfranke hat geschrieben:Der Code ist okay, das Problem ist er kennt "SETTABLEVIEW" anscheinend noch nicht in Navision 2.60f. Er sagt nur: "Sie haben eine undefinierte Variable angegeben. SETTABLEVIEW Definieren sie die Variable unter 'C/AL-Globale Variablen'".

Gab es in NAV 2.60 schon F5 beim Schreiben von Code? Dort findest du alle verfügbaren Befehle; vielleicht hieß er damals nur anders.

Re: Dataport ruft Dataports auf, diese durch CU Filtern?

28. März 2014 13:03

Hallo Natalie,

ja aber der DATAPORT besitzt wohl, leider, nur die Funktionen RUN und RUNMODAL. :/

Gibt es noch eine andere Möglichkeit?! Eventuell im Export des einzelnen Dataports die Einträge Filtern? Nur wie geh ich da sonst vor und ist das wirklich schneller als alle Daten zu exportieren. So durchsucht er die Datenbank ja einmal komplett und fängt dann an zu exportieren.

Edit: @winfy: Die DataPorts exportieren bereits statisch und ohne RequestForm :)

Liebe Grüße
Stefan

Re: Dataport ruft Dataports auf, diese durch CU Filtern?

28. März 2014 13:08

sfranke hat geschrieben:ja aber der DATAPORT besitzt wohl, leider, nur die Funktionen RUN und RUNMODAL. :/


Hast du die Dataports einmal als Variablen angelegt, wie ich das gerade beschrieben habe (siehe Code)?

mfg,
winfy
Zuletzt geändert von winfy am 28. März 2014 13:59, insgesamt 1-mal geändert.

Re: Dataport ruft Dataports auf, diese durch CU Filtern?

28. März 2014 13:17

BAM! Danke Winfy!

Ich habs probiert und in den Variablen Funktioniert es!

Liebe Grüße
Stefan