27. März 2009 12:45
Hallo,
ich habe mir einen Dataport erstellt der mir aus einer Tabelle einige Daten in eine Textdatei exportiert. Dabei müssen als Filter zwei Werte
eingebeben werden. Einer davon wäre das Datum z. B. 010109..h. Da man die Textdatei täglich haben möchte könnte man ja auch als Datums-
filter 010109..311209 machen. Der zweite Filter ist immer konstant.
Kann ich es realisieren, daß der Dataport mit beiden Filtern einmal täglich automatisiert die Textdatei erstellt (am besten Nachts) ?
Gruß
Ralf
Zuletzt geändert von AH am 30. März 2009 13:40, insgesamt 1-mal geändert.
27. März 2009 16:58
Ich würde in OnPreDataItem des Dataports eine Zeile einfügen:
Exporttabelle.setfilter(Datum,'%1..%2',workdate,311209);
Den Dataport musst du dann in den Objektaufrufplaner einsetzen.
30. März 2009 08:28
Ich habe diese Zeile in den Code eingebaut:
Time Entry/T - OnPreDataItem()
Anwesenheitszeiten.setfilter(Datum,'%1..%2',workdate,311209);
jedoch meldet NAV mir einen Fehler beim Kompilieren:
Sie haben eine unbekannte Variable angegeben.
setfilter
Definieren Sie die Variable unter 'C/AL Globale Variablen'.
Als was muß ich 'setfilter' denn definieren ?
Gruß
Ralf
30. März 2009 08:37
AH hat geschrieben:Anwesenheitszeiten.setfilter(Datum,'%1..%2',workdate,311209);
Hallo Ralf,
beim 311209 fehlt am Ende noch das D.
So sollte der Filter aussehen:
- Code:
Anwesenheitszeiten.setfilter(Datum,'%1..%2',workdate,311209D);
Dann sollte es auch funktionieren.
Viele Grüße,
Jürgen
30. März 2009 08:40
Alternativ (macht das gleiche):
- Code:
Anwesenheitszeiten.SETRANGE(Datum, WORKDATE, 311209D);
Wenn SETRANGE oder SETFILTER nicht erkannt werden, dann hast du Anwesenheitszeiten nicht als Recordvariable der entsprechenden Tabelle deklariert (unter den globalen oder lokalen Variablen).
30. März 2009 09:46
ok, habe Anwesenheitszeiten nun als Record der Tabelle deklariert, nun meckert
NAV aber 'Datum' an, als was muß ich das denn deklarieren ?
Das ganze sieht jetzt so aus:
Anwesenheitszeiten.setfilter(Datum,'%1..%2',workdate,311209D);
wobei
Anwesenheitszeiten ein Record von Time Entry/T
Datum ein Date
ist.
30. März 2009 09:56
AH hat geschrieben:Datum ein Date
Nein, wir sprechen mit Datum nur ein Feld und keine Variable an. Diese Variable also löschen.
Was du brauchst, ist den Feldnamen, vermutlich Date, also:
- Code:
Anwesenheitszeiten.SETRANGE(Date, WORKDATE, 311209D);
Wenn das auch nicht geht, dann klick dich mal mit F5 in die Felder von Anwesenheitszeiten durch.
30. März 2009 10:36
Ja dann habe ich es anfangs doch richtig gemacht, das Feld heißt 'Current Date'.
So müßte es aussehen:
Anwesenheitszeiten.SETFILTER("Time Entry/T"."Current Date",'%1..%2',WORKDATE,311209D);Dann erhalte ich folgendes:
Es wurde ein Feld einer Datensatzvariablen erwartet: Zum Beispiel:
Datensatz.Feld
Debitor.Name
30. März 2009 10:47
Anwesenheitszeiten ist aber noch immer als Recordvariable vom Typ Time Entry/T definiert, oder?
Dann sollte es so auch funktionieren:
- Code:
Anwesenheitszeiten.SETFILTER("Current Date",'%1..%2',WORKDATE,311209D);
30. März 2009 10:53
supi, funktioniert ...
jetzt ist mir nur noch nicht klar, was WORKDATE sein soll.
Egal ob WORKDATE oder 010109D dort steht, gibt NAV alle
Datensätze auch vor 2009 mit aus.
30. März 2009 11:00
AH hat geschrieben:jetzt ist mir nur noch nicht klar, was WORKDATE sein soll.
Schau doch mal in die Onlinehilfe (C/SIDE Reference Guide) ....
...gibt NAV alle Datensätze auch vor 2009 mit aus.
Du hast in deinem Dataport so genannte DataItems, eines davon müsste Time Entry/T heißen.
Stell den Cursor drauf, und trage in den Trigger OnBeforeExportRecord ein:
- Code:
SETRANGE("Current Date", 010109D, 311209D);
Deinen bisherigen Quelltext und deine bisherige Variable brauchst du - soweit ich das ohne Einsicht deines Dataports beurteilen kann - nicht mehr.
30. März 2009 12:13
Habe nun auch versucht mittels der Hilfe den Filenamem für die
Exportdatei vorzugeben.
Das sieht folgendermaßen aus:
Time Entry/T - OnBeforeExportRecord()
SETRANGE("Current Date", 010109D, 311209D);
CurrDataport.FILENAME:='C:\TEMP\ABC.TXT'Leider sagt er bei der Ausführung, daß das Betriebssystem den
angegebenen Pfad nicht finden kann.
30. März 2009 12:23
Ich vermute, dass der DP von sich selbst denkt, er würde importieren, findet aber unter dem angegebenen Pfad (natürlich noch) keine Datei.
Probiers mal so:
Trigger OnPreDataPort:
- Code:
IF CurrDataport.IMPORT THEN
CurrDataport.FILENAME:='C:\TEMP\ABC.TXT';
30. März 2009 13:21
Ich habe es nun so gelöst ...
Dataport - OnPreDataport()
IF CurrDataport.IMPORT THEN
CurrDataport.FILENAME:='C:\ABC.TXT';
CurrDataport.IMPORT := FALSE ;
Time Entry/T - OnBeforeExportRecord()
SETRANGE("Current Date", 010109D, TODAY);
SETFILTER("Time Account No.",'%1','100');
Trotzdem gibt NAV mir in der Textdatei in der ersten Zeile einen Datensatz aus
in dem 'Time Account No.' = 950 ist. Warum ?
Alle anderen sind mit dem Wert 100.
30. März 2009 13:33
Setz SetRange/-Filter ins OnPreDataItem. Dann erfolgt die Filterung auch vor dem ersten Datensatz.
30. März 2009 13:39
das war´s ...
Danke an alle !
Gruß
Ralf
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.