[Gelöst] Richtiger Datumsfilter wird als falsch angesehen.

22. Januar 2008 17:27

Hallo zusammen,

ich habe einen Bericht bei dem ich verkaufte Artikel auswerte. Dabei kann ich auch auf das Buchungsdatum filtern. Wenn ich dort nun einen Zeitraum eingeben möchte bringt er mir eine Fehlermeldung dass das Datum nicht gültig wäre.

Auf der Suche nach der Lösung bin ich dann auch wieder auf Marcs Seite gestoßen wo er hier über die Datumsangaben in Navision schreibt. Ich dachte ich hätte vielleicht die Rangeangebe des Datums falsch eingegeben und probierte es mit dem "J".. Aber auch da der gleich Fehler (der übrigens auf Marcs Seite auch als Screenshot hinterlegt ist). Die Datumseinstellung in der Systemsteuerung ist auch richtig eingestellt. Hat jemand ne Idee warum ich diese Fehlermeldung bekomme?
Zuletzt geändert von Heike Bennerscheid am 24. Januar 2008 10:08, insgesamt 1-mal geändert.

Re: Richtiger Datumsfilter wird als falsch angesehen.

22. Januar 2008 17:42

Heike Bennerscheid hat geschrieben:Hallo zusammen,

ich habe einen Bericht bei dem ich verkaufte Artikel auswerte. Dabei kann ich auch auf das Buchungsdatum filtern. Wenn ich dort nun einen Zeitraum eingeben möchte bringt er mir eine Fehlermeldung dass das Datum nicht gültig wäre.

Ich schieße einfach mal in's Blaue und vermute, dass der Buchungsdatumsfilter auf der Registerkarte "Optionen" eingegeben wird?
Dort ist es dann nämlich ein Textfeld und kein Datumsfeld bzw. Datumsfilter, auch wenn das Feld so heißen mag.

Kannst du uns mal einen Screenshot von der RequestForm des Reports geben, damit wir uns ein Bild davon machen können, wie und wo du den Datumsbereich eingetragen hast?

22. Januar 2008 17:48

Es ist die Registerkarte Verkaufsrechnungskopf (Sales Invoice Header) in der Request Form.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

22. Januar 2008 17:57

Bekommst du die Fehlermeldung direkt nach der Eingabe? Hast du mal den Debugger eingeschaltet?

Gruß Jan

22. Januar 2008 18:20

Nein. Ich bekomme die Fehlermeldung wenn ich auf Seitenansicht klicke. Den Debugger habe ich noch nicht verwendet. Mal schaun ob ich schlau aus ihm werde (was selten der Fall ist).

Edit:

Der Debugger bringt kurz vor der Fehlermeldung "Kein gültiges Datum" eine Fehlermeldung "Break on Error". Mehr hab ich auch nicht herausgefunden mit dem Debugger.
Zuletzt geändert von Heike Bennerscheid am 22. Januar 2008 18:22, insgesamt 1-mal geändert.

22. Januar 2008 18:20

Dann hast du sicher im Code irgendeine Abfrage die so einen Range verhindert. Schau mal im OnPreDataItem-Trigger nach...

22. Januar 2008 18:24

Im OnPreDataItem Trigger hab ich lediglich dies hier stehn:

Code:
DebitorFilter := GETFILTER("Sell-to Customer No.");
PreBuchDat := GETFILTER("Posting Date");

22. Januar 2008 19:09

Dann such mal weiter ob PreBuchDat noch irgendwo abgefragt wird. Irgendwas in Richtung

If PreBuchdat = xxx Then
Error...

22. Januar 2008 19:20

Hallo,
vielleicht ist ja die Variable "PreBuchdat" vom Typ Datum, dann kommt es bei der Codezeile
Code:
PreBuchDat := GETFILTER("Posting Date");

auf jeden Fall zum Error.
Auf diesem Feld darf dann eben nur ein einzelnes Datum und kein Datumsbereich eingegeben werden.

22. Januar 2008 20:05

Evtl könnte der Report den GETFILTER noch nutzen um mit der befüllten Variable an anderer Stelle wieder irgendwas einzufiltern?

Zum Beispiel so:

Code:
PreBuchDat := GETFILTER("Posting Date");
.
.
.
SETFILTER("Posting Date",'%1..%2,DateVar1,PreBuchDat);


??

22. Januar 2008 21:19

jm hat geschrieben:Hallo,
vielleicht ist ja die Variable "PreBuchdat" vom Typ Datum, dann kommt es bei der Codezeile
Code:
PreBuchDat := GETFILTER("Posting Date");

auf jeden Fall zum Error.


Stimmt, bin mir eigentlich zu 99% sicher, dass dies der Grund ist - Benennung der Variable sei Dank ;-)

23. Januar 2008 09:41

Also das glaube ich eher nicht, dann könnte man den Report nämlich nicht kompilieren.

23. Januar 2008 10:14

PreBuchDat ist vom Typ Text und wird per Evaluate in eine Date Variable geschrieben.. diese wird dann per SETFILTER abgefragt. Ist das der Fehler?

23. Januar 2008 10:15

Könntest du evtl. mal die Code-Stelle posten?

23. Januar 2008 10:21

diese wird dann per SETFILTER abgefragt.

Das kann sein, wenn 0D zurückgegeben wird und mit diesem Wert dann gerechnet werden soll (Calcdate z.B.) dann knallts.
Es kann aber vorher schon knallen, nämlich beim Evaluate, wenn mehr als ein Datum im Filter steht. Wenn PreBuchdat zum setzen des Filters verwendet werden soll, dann mach einfach:
Code:
Setfilter("Posting Date",PreBuchDat);

23. Januar 2008 10:24

Nee, ich habs, das Problem ist das Evaluate...wenn Heike einen Range eingibt (01.01.08..31.01.08) wird dieser ja über das Getfilter an die PreBuchDat-Variable übergeben wenn diese Variable nun mit dem Filter-String per Evaluate an eine Date-Variable übergeben wird kommt der von Heike beschriebene Fehler.

23. Januar 2008 10:31

Also ich hab 2 DataItems

Sales Invoice Header
- ZuletztVerkauft

In Sales Invoice Header gibt es ja das "Posting Date" und im ZuletztVerkauft gibt es das Feld Buchungsdatum (ZuletztVerkauft ist eine TempTabelle die während des Reports gefüllt wird).
Wie kann ich denn jetzt im "Posting Date" eine Datums-range angeben die ich dann im ZuletztVerkauft DataItem mit Buchungsdatum Filtern kann?

Code:
 //Sales Invoice Header - OnPreDataItem

PreBuchDat := GETFILTER("Posting Date");
EVALUATE(BuchDat,PreBuchDat);

//ZuletztVerkauft - OnPreDataItem

SETFILTER(Buchungsdatum,'%1',BuchDat);

23. Januar 2008 10:40

Du könntest die Filterwerte per GETRANGEMIN und GETRANGEMAX abfragen und die dann zum Filtern nutzen - etwa so:

Code:
Var: StartDate - Text 50
Var: EndDate - Text 50

StartDate := GETRANGEMIN("Posting Date");
EndDate := GETRANGEMAX("Posting Date");


Im PreDataItem-Trigger von "Zuletzt verkauft" könntest du dann schreiben:

Code:
SETRANGE(Buchungsdatum,StartDate,EndDate);


Das einzige was mich jetzt noch ien bischen irritiert ist das mit der Temporären Tabelle ZuletztVerkauft ist dann ein Integer? Weil meines Wissens kann man doch temporäre Tabellen gar nicht als DataItem nutzen?

23. Januar 2008 10:42

Naja was heißt Temp Tabelle. Es ist schon eine richtige Tabelle die nur zur laufzeit gefüllt wird. Also nicht als Tamp Variable deklariert.

Ich werd das mal mit dem GETRANGE ausprobieren.

23. Januar 2008 11:02

Das mit dem GETRANGE hat prima geklappt. Danke hierfür.

Noch ne andere Frage. Ein Debitor hat am 28.09.07 folgende Artikelnummern gekauft:

806 2x
808 1x
811 2x
931 1x
932 1x

Wenn ich nun aber auf dieses Datum filtere dann schmeißt er mir folgende Werte raus

806 2x
808 3x
811 4x
931 1x

Also was ich herausgefunden hab ist das er die Werte von der letzten Bestellung dazu gerechnet hat.. aber es fehlt ja die 932 komplett. Das verwirrt mich irgendwie total.

Da vielleicht noch jemand ne Idee zu?

Edit:

Thema hat sich erledigt. Hab vergessen beim schreiben in die Temp Tabelle auf das Datum zu filtern.