Seite 1 von 1

copy-Funktion in Datumsangaben: Oje!

Verfasst: Dienstag 14. Januar 2020, 12:47
von c.buchner
Hallo,
verwende ich die copy-Funktion, um aus einem Datum die Jahreszahl zu ermitteln, dann muss ich Glück haben. Ist es ein Datum mit zweistelliger oder einstelliger Monatszahl (an die Tageszahl habe ich noch gar nicht gedacht)?

Bei einer einstelligen Monatszahl erhalte ich mit copy(Schueler['AbschlussDatum'],9,2) nur die letzte Ziffer, bei einer zweitstelligen Monatszahl erhalte ich zwei Ziffern.

Gibt es im ReportBuilder nicht eine Delphi-Funktion wie "AnsiRightStr ( const Source : AnsiString; const Count : Integer ) : AnsiString", so dass ich von links die letzten zwei Ziffern aus dem Datum erhalte?

Re: copy-Funktion in Datumsangaben: Oje!

Verfasst: Dienstag 14. Januar 2020, 13:29
von Christoph Sprung
c.buchner hat geschrieben: Dienstag 14. Januar 2020, 12:47 von links die letzten zwei Ziffern aus dem Datum
Guten Tag Herr Buchner,
führt

Code: Alles auswählen

Text := copy(Schueler['AbschlussDatum'],length(Schueler['AbschlussDatum']) - 1,2);
zum gewünschten Ergebnis?

Re: copy-Funktion in Datumsangaben: Oje!

Verfasst: Dienstag 14. Januar 2020, 14:16
von wschrewe
c.buchner hat geschrieben: Dienstag 14. Januar 2020, 12:47verwende ich die copy-Funktion, um aus einem Datum die Jahreszahl zu ermitteln, dann muss ich Glück haben. Ist es ein Datum mit zweistelliger oder einstelliger Monatszahl (an die Tageszahl habe ich noch gar nicht gedacht)
Dann zerlegen Sie doch das Datum in seine Einzelteile:

Code: Alles auswählen

var
  lJahr, lMonat, lTag : Integer;
begin
  DecodeDate(Schueler['AbschlussDatum'],lJahr,lMonat,lTag);
  ...
  ...
end;
Mit den Bestandteilen können Sie dann nach Belieben weiter arbeiten.

Re: copy-Funktion in Datumsangaben: Oje!

Verfasst: Dienstag 14. Januar 2020, 16:26
von Christoph Sprung
wschrewe hat geschrieben: Dienstag 14. Januar 2020, 14:16 Dann zerlegen Sie doch das Datum in seine Einzelteile:
Schueler['AbschlussDatum'] ist ein Textfeld, sein Inhalt müsste erst ein Format erhalten, das von DecodeDate zerlegt werden kann. Das geht natürlich und bringt auch richtige Ergebnisse - aber nicht immer. Der Eintrag 'Juni 21' wird decodiert, liefert hier als Jahr aber 2020.
Falls das Jahr in Schueler['AbschlussDatum']in Herrn Buchners DB immer der letzte Teil des Eintrages ist, müsste der o. g. copy-Befehl eigentlich reichen.

Re: copy-Funktion in Datumsangaben: Oje!

Verfasst: Dienstag 14. Januar 2020, 17:23
von wschrewe
Christoph Sprung hat geschrieben: Dienstag 14. Januar 2020, 16:26Schueler['AbschlussDatum'] ist ein Textfeld,
Na gut, dann eben

Code: Alles auswählen

DecodeDate(StrToDate(Schueler['AbschlussDatum'] ),lJahr,lMonat,lTag);
'Juni 21' könnte deswegen falsch decodiert werden, weil die Schreibweise möglicherweise nicht dem länderspezifischen (kurzen) Datumsformat entspricht.