[GELÖST] Date Field vergleichen

12. Februar 2008 15:28

Hallo Leute,

ein Date Field macht mir Probleme. Ich möchte Abfragen, ob es leer ist:

if DateField <> '' then
...

- Typenconvertierungsfehler-

Hat jemand eine Idee?
Zuletzt geändert von Rabe_Nitz am 12. Februar 2008 17:46, insgesamt 3-mal geändert.

12. Februar 2008 15:43

versuch es mal mit <> 0d . Das steht afaik für ein nicht definiertes Datum

12. Februar 2008 15:59

Nimm statt desssen
Code:
IF DateField <> 0D THEN
 ...


Hättest du aber sofort in der Forensuche (z.B. mit Suchbegriffen "Datum leer") gefunden.
--> Thema [Gelöst] Datum auf leer prüfen

12. Februar 2008 16:04

Hallo Leute,

das würde klappen. Jedoch habe ich ein tieferes Problem mit diesem Datumsfeld.

Ich habe ein neues Feld auf einer Form erstellt und dann in den globalen Variabeln eine neue Date Variable erstellt. Diese Variable habe ich den Feld zugewiesen. Dieses Feld sollte ein Datumsfilter werden, was mir aber nicht gelingt.
Muss ich auf dem Feld spezifisch sagen, dass es ein Filter ist?
Möchte nämlich Datensätze nach Datum über dieses Feld filtern.

Grüße
Daniel

12. Februar 2008 16:07

Ich glaube, du bringst da was durcheinander (oder ich, wenn ich es lese) - also nochmal:
Du hast ein Feld auf einer Form erstellt. Als SourceExr dient kein Tabellenfeld, sondern eine globale Variable.
Was genau soll passieren, wenn der Benutzer in dieses Feld ein Datum eingibt?

12. Februar 2008 16:08

Hi Daniel!

Rabe_Nitz hat geschrieben:Dieses Feld sollte ein Datumsfilter werden, was mir aber nicht gelingt. Muss ich auf dem Feld spezifisch sagen, dass es ein Filter ist?

Nein, dem Feld musst es nicht "sagen". "Sag" es der Variable in dem du den DataType von Date auf DateFormula stellst.

Gruß, Marc

12. Februar 2008 16:17

Marc Teuber hat geschrieben:Hi Daniel!

Rabe_Nitz hat geschrieben:Dieses Feld sollte ein Datumsfilter werden, was mir aber nicht gelingt. Muss ich auf dem Feld spezifisch sagen, dass es ein Filter ist?

Nein, dem Feld musst es nicht "sagen". "Sag" es der Variable in dem du den DataType von Date auf DateFormula stellst.

Gruß, Marc

Ich glaube, jetzt dürfte das Chaos perfekt sein, denn was hat eine DateFormula mit einem DateFilter zu tun?

Das einfachste wäre, in der Tabelle selbst ein neues Feld vom Typ Date zu erstellen und in den Properties die FieldClass auf FlowFilter zu setzen.
Wenn du dieses Feld auf der Form einblendest, hast du prompt das Verhalten, welches du dir wünscht.
Die Benutzereingabe musst du dann allerdings mit GETFILTER(MeinDatumsFilter); abfragen.

12. Februar 2008 16:25

Ich habe es jetzt mal so versucht, wie es Timo vorgeschlagen hat. Also ich denke so könnte es bei mir funktionieren.

Danke für die Hilfe Leute und entschuldigt das kleine Chaos :)

Grüße

12. Februar 2008 16:42

Leute,

ich glaube ich stehe volle auf der Leitung gerade...

Ich komme einfach nicht mehr weiter:

Ich habe das Feld jetzt erstellt und eingefügt. Ich möchte mit diesem Filterfeld nach einer Spalte filtern ("Due Date"). Mein Code sieht folgendermaßen aus:


IF GETFILTER("Date Filter") <> '' THEN
TempJobToDo2.SETRANGE(TempJobToDo2."Due Date","Date Filter")
else
TempJobToDo2.setrange(TempJobToDo2."Due Date",'');

Also: Als erstes Frage ich ab, ob überhaupt was eingetragen ist. Wenn JA: Soll auf die Spalte "Due Date" gefiltert werden, wenn NEIN, soll der Filter aufgehoben werden.

Bei mir filtert er nur dach leere Felder als "Due Date". Zusätzlich gibt es einen Typenconvertierungsfehler in der letzten Zeile (Date <> Text)

12. Februar 2008 16:44

Kleine Korrektur in der letzten Zeile (siehst du den Unterschied?):

Code:
IF GETFILTER("Date Filter") <> '' THEN
  TempJobToDo2.SETRANGE(TempJobToDo2."Due Date","Date Filter")
else
  TempJobToDo2.setrange(TempJobToDo2."Due Date");

12. Februar 2008 17:46

Funktioniert, danke!

13. Februar 2008 01:48

Code:
IF GETFILTER("Date Filter") <> '' THEN
  TempJobToDo2.SETRANGE(TempJobToDo2."Due Date","Date Filter")
else
  TempJobToDo2.setrange(TempJobToDo2."Due Date");

Auch hier hat sich ein kleiner aber gemeiner Fehler eingeschlichen, denn dieser Code funktioniert nur, sofern ein einzelnes Datum im Filterfeld eingetragen wird.
Damit das auch mit vollwertigen Filtern (z. B. 01.01.08..31.01.08) funktioniert, müsste es wie folgt aussehen:
Code:
IF GETFILTER("Date Filter") <> '' THEN
  TempJobToDo2.SETFILTER(TempJobToDo2."Due Date","Date Filter")
else
  TempJobToDo2.setrange(TempJobToDo2."Due Date");

Man achte auf die zweite Programmzeile!