Beitrag von Helmut Meisl (119 Beiträge) am Dienstag, 29.März.2016, 15:58.
Problem Datumsausgabe
Ich berechne in einer Perl-Routine verschiedene Werte. Die letzten 11 Werte möchte ich ausgeben. Das funktioniert alles soweit perfekt. Nur bei der Ausgabe des Datums spießt es sich.
Die Datumwerte sind in den Variablen $DT1, $DT2, $DT3 .... abgespeichert.
Wenn ich die Werte ohne Formatierung ausgebe, ist das ausgegebene Datum richtig.
Wenn ich aber vor der Ausgabe die Werte formatieren will, bekomme ich im der Ausgabe immer nur mehr das letzte Datum in dem von mir gewünschten Format.
Was mache ich falsch?
Der Perl-Code vor der Ausgabe:
<perl>
$DT10 = datum($_raw{$DT10},"Tag0.Monat0.Jahr");
$DT9 = datum($_raw{$DT9},"Tag0.Monat0.Jahr");
$DT8 = datum($_raw{$DT8},"Tag0.Monat0.Jahr");
.....
</perl>
Warum beinhalten in der Ausgabe alle Datumsfelder $DT10 bis $DT1 immer nur mehr das letzte Datum?
Vor dem umwandeln / formatieren stimmt die Ausgabe.
Wäre schön, wenn wieder ein baseportal-Profi einen Tipp für mich hätte!
DANKE!
Antworten
Beitrag von richard (1187 Beiträge) am Dienstag, 29.März.2016, 16:52.
Re: Problem Datumsausgabe
Antworten
Beitrag von Helmut Meisl (119 Beiträge) am Dienstag, 29.März.2016, 17:12.
Leider nein ...
... ohne raw bekomme ich als Ausgabewert 0.0.00.
Antworten
Beitrag von richard (1187 Beiträge) am Dienstag, 29.März.2016, 17:46.
Re: Leider nein ...
Dann mußt Du mal zeigen, was in Deinen Variablen vor und nach der Umwandlung tatsächlich drinsteht - ausgeben lassen und hier posten. Am besten für mindestens 2, also z.Bsp. für $DT10 und $DT9.
Antworten
Beitrag von Helmut Meisl (119 Beiträge) am Dienstag, 29.März.2016, 17:52.
Gerne ...
Das ist der Beispielscode:
out "Variable DT11 vorher: ". $DT11."<br>";
$DT11 = datum($_raw{$DT11},"Tag0.Monat0.Jahr");
out "Variable DT11 nachher: ".$DT11."<br>";
out "Variable DT10 vorher: ".$DT10."<br>";
$DT10 = datum($_raw{$DT10},"Tag0.Monat0.Jahr");
out "Variable DT10 nachher: ".$DT10."<br>";
</perl>
Und das die daraus resultierende Ausgabe:
Variable DT11 vorher: Samstag, 19.März.2016
Variable DT11 nachher: 29.03.2016
Variable DT10 vorher: Sonntag, 20.März.2016
Variable DT10 nachher: 29.03.2016
Antworten
Beitrag von Sander (8133 Beiträge) am Dienstag, 29.März.2016, 20:46.
Re: Gerne ...
Antworten
Beitrag von Helmut Meisl (119 Beiträge) am Dienstag, 29.März.2016, 21:11.
Re: Re: Gerne ...
Sander danke!
Die Variante ohne "$" geht auch nicht.
D.h. ich werde wohl oder übel die Variable mit dem Datum händisch "zerlegen" müssen.
Oder kann ich das in der Datenbank selbst beeinflussen mit dem vorzugebenden Erfassungs- oder Ausgabedatum?
Mit dem Anpassen des Ausgabeformates der DB habe ich es schon probiert, hat nichts geholfen.
Antworten
Beitrag von Helmut Meisl (119 Beiträge) am Dienstag, 29.März.2016, 21:15.
Re: Re: Re: Gerne ...
Problem gelöst!
Ich habe es doch noch einmal mit dem Ausgabeformat in der DB versucht und diese reorganisiert.
Jetzt entspricht die Ausgabe der in der DB.
Vielen Dank trotzdem!
Antworten
Beitrag von richard (1187 Beiträge) am Mittwoch, 30.März.2016, 07:24.
Re: Re: Re: Re: Gerne ...
Wäre schön, wenn Du den funktionierenden Code dann hier am Ende auch posten würdest. Dem nächsten ders braucht würde es vielleicht helfen.
Antworten
Beitrag von Helmut Meisl (119 Beiträge) am Mittwoch, 30.März.2016, 08:30.
Lösung
Ich dachte, die Lösung habe ich schon beschrieben. Gerne aber nochmal etwas genauer.
In der DB gibt es ein Datumsfeld namens "datum".
Aus diesem Feld mache ich im Durchlauf (loop) die einzelnen Variablen DT1, DT2, DT3 ...
Da ich die Ausgabe im kurzen Datumsformat (TT.MM.JJ) benötige, wollte ich die Variablen DT1... entsprechend umwandeln; das Ausgabeformat in der DB war auf das lange Datumsformat mit Tagesnamen usw. eingestellt.
Nachdem die Umwandlung - siehe Thread - nicht funktioniert hat, habe ich das Ausgabeformat in der Datenbank neu festgelegt und (vermutlich gar nicht nötig) die DB neu reorganisiert.
Mit diesem Umweg sehen meine Variablen DT1... so aus, wie ich es will.
Antworten