[Gelöst] Date aus Integer zusammenbauen

25. Mai 2007 08:46

Hallo liebe Forengemeinde,

ich habe da ein ganz großes Problem:

Ich möchte die Tabelle Date Filtern. Die Vorgegebenen Felder aus einer Tabelle sind drei Integer mit dem Tag (1-31), dem Monat(1-12) und dem Jahr(07|007|2007). Anhand dieser Felder möchte ich ein Datum bauen, mit dem ich die Tabelle Date Filtern kann.

Mein Lösungsansatz:
Code:
tmpVariant := STRSUBSTNO('%1.%2.%3', Tagesergebnisse.Tag,Tagesergebnisse.Monat,Tagesergebnisse.Jahr);
// ???- Umwandeln von Variant nach Date:
tmpDate := VARIANT2DATE(tmpVariant); // Das gibt eine Fehlermeldung
EVALUATE(tmpDate, tmpVariant); // Das gibt keine Fehlermeldung, aber ein falsches Datum


Es wäre schön wenn mir jemand helfen könnte...
Danke schonmal im voraus...
Zuletzt geändert von Steev am 25. Mai 2007 09:32, insgesamt 1-mal geändert.

25. Mai 2007 09:02

[code]

Bilde folgende Variablen
Name DataType Subtype Length
Datum Date
V_Tag Text 30
V_Monat Text 30
V_Jahr Text 30


If STRLEN(Tagesergebnisse.Tag) = 1 Then
V_Tag := '0'+FORMAT(Tagesergebnisse.Tag)
ELSE
V_Tag := FORMAT(Tagesergebnisse.Tag);


If STRLEN(Tagesergebnisse.Monat) = 1 Then
V_Monat := '0'+FORMAT(Tagesergebnisse.Monat)
ELSE
V_Monat := FORMAT(Tagesergebnisse.Monat);

If STRLEN(Tagesergebnisse.jahr) = 1 Then
V_Jahr := '0'+FORMAT(Tagesergebnisse.jahr)
ELSE
V_Jahr := FORMAT(Tagesergebnisse.Jahr);
If EVALUATE(Datum,V_Tag+V_Monat+V_Jahr) Then;
[code]

mfg Michael

25. Mai 2007 09:13

Dankeschön, ich werde es gerade ausprobieren...
mir ist nur aufgefallen das du in deinen Abfragen nicht beachtest das die Felder integer sind. Naja, ist ja auch egal.... :wink:
Zuletzt geändert von Steev am 25. Mai 2007 09:19, insgesamt 1-mal geändert.

25. Mai 2007 09:14

blick ichs falsch oder erfüllt DMY2DATE nicht die aufgabe?
hab mal die hilfe kurz angeschnitten bzw die wichtigen parts rauskopiert *g*

DMY2DATE (Date)
Use this function to return a Date based on a day, month, and year.

Date := DMY2DATE(Day [, Month] [, Year])

Date
Data type: date
The resulting date.

Day
Data type: integer
The number of the day in the month (1..31).

Month
Data type: integer
The number of the month in the year (1..12). If you omit this optional parameter, the system uses the current month as the default.

Year
Data type: integer
The four-digit number of the year. If you omit this optional parameter, the system uses the current year as the default.
Zuletzt geändert von Phoenix am 25. Mai 2007 09:34, insgesamt 1-mal geändert.

25. Mai 2007 09:21

@Phoenix:
Habe ich noch nicht ausprobiert, werde es aber gerade tun...

[edit:]
Ich musste nur noch das Jahr umformen und dann hat es geklappt. Tausend Dank euch beiden...

25. Mai 2007 09:32

tmpDate := DMY2DATE(Tagesergebnisse.Tag,Tagesergebnisse.Monat,Tagesergebnisse.Jahr);

und schon haste dein datum im datumsformat. *g* das von michael klappt
auch, wär mir aber zu umständlich bzw zu performance-fressend.

Gruß Marcel


EDIT: schön dass es klappt.

25. Mai 2007 13:07

@phoenix

Deine Variante ist natürlich wesentlich besser, bin ich nicht daruf gekommen.

mfg Michael