Seite 1 von 1

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

Verfasst: 28. März 2014 08:35
von sfranke
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

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

Verfasst: 28. März 2014 09:33
von winfy
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

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

Verfasst: 28. März 2014 12:02
von sfranke
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?

Verfasst: 28. März 2014 12:22
von winfy
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

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

Verfasst: 28. März 2014 12:46
von sfranke
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?

Verfasst: 28. März 2014 12:52
von winfy
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

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

Verfasst: 28. März 2014 12:57
von Natalie
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?

Verfasst: 28. März 2014 13:03
von sfranke
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?

Verfasst: 28. März 2014 13:08
von winfy
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

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

Verfasst: 28. März 2014 13:17
von sfranke
BAM! Danke Winfy!

Ich habs probiert und in den Variablen Funktioniert es!

Liebe Grüße
Stefan