AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

FastReport Datum formatieren

Ein Thema von Salomon · begonnen am 22. Jan 2008 · letzter Beitrag vom 22. Jan 2008
Antwort Antwort
Benutzerbild von Salomon
Salomon

Registriert seit: 9. Jun 2002
453 Beiträge
 
#1

FastReport Datum formatieren

  Alt 22. Jan 2008, 10:42
Hi,
ich hätte gerne ein DateTime Feld in FastReport wie folgt dagestellt:

Mon 01.01.2008
Tue 02.01.2008
Wed 03.01.2008

Mit der Formatierung "ddd dd.mm.yyyy" im Report war ich schon einigermaßen erfolgreich. Allerdings sind die Wochentagsabkürzungen auf Deutsch. Die hätte ich gerne auf englisch. Hat jemand eine Idee?

Gruß
Marcus
01001000 01100001 01101100 01101100 01101111
01010111 01100101 01101100 01110100 00100001

http://www.it-adviser.net
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: FastReport Datum formatieren

  Alt 22. Jan 2008, 11:21
Delphi-Quellcode:
   ShortDayNames[1] := 'Sun';
ShortDayNames[2] := 'Mon';
ShortDayNames[3] := 'Tue';
ShortDayNames[4] := 'Wed';
ShortDayNames[5] := 'Thu';
ShortDayNames[6] := 'Fri';
ShortDayNames[7] := 'Sat';
Vorher solltest Du den Inhalt des Arrays sichern und nach dem Ausdruck des Reports wiederherstellen, denn die Einstellungen gelten systemweit.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: FastReport Datum formatieren

  Alt 22. Jan 2008, 11:30
Hallo Marcus,

wie wäre es hiermit:

Delphi-Quellcode:
var
  fs: TFormatSettings;
begin
  GetLocaleFormatSettings($0409, fs);
  ShowMessage(FormatDateTime('ddd dd.mm.yyyy', now, fs));
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: FastReport Datum formatieren

  Alt 22. Jan 2008, 11:33
Das ist natürlich sehr schön und auch Thread-Safe, aber er will es ja im Reportgenerator verwenden. Eine weitere Möglichkeit bestünde in der Definition einer UDF für Datumswerte in Fastreport, dann kann man die Funktion im Delphi Programm lassen und sauber mit TFormatSettings arbeiten.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: FastReport Datum formatieren

  Alt 22. Jan 2008, 11:40
Hallo Union,

wenn DateTime-Feld sich auf ein TDateTimeField bezieht, so würde ich einfach ein calculated field deklarieren und diesem den bereits formatierten String zuweisen. FastReport ist dann aller Pflichten enthoben.

Freundliche Grüße
  Mit Zitat antworten Zitat
Benutzerbild von Salomon
Salomon

Registriert seit: 9. Jun 2002
453 Beiträge
 
#6

Re: FastReport Datum formatieren

  Alt 22. Jan 2008, 11:47
Ihr seit die besten! Das funktioniert super Habe mir schon gedacht, das das mit den Ländereinstellung etc. zu tun hat, aber auf so ein Array wäre ich wohl nicht gekommen.

Im FastReport geht nur Unions Methode, da das PascalScript die FormatSettings nicht kennt. Anonsten funktioniert marabus Mehode unter Delphi auch gut.
01001000 01100001 01101100 01101100 01101111
01010111 01100101 01101100 01110100 00100001

http://www.it-adviser.net
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: FastReport Datum formatieren

  Alt 22. Jan 2008, 11:58
Und hier die Mischung aus beidem:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
   // Fastreport die Funktion mitteilen
   frxReport1.AddFunction('function MyDateTimeToStr(ADateTime : TDateTime) : string');
end;

function TForm1.frxReport1UserFunction(const MethodName: String;
  var Params: Variant): Variant;
var
   fs : TFormatSettings;
begin
   if Methodname = 'MYDATETIMETOSTRthen
   begin
      GetLocaleFormatSettings($0409, fs);
      result := FormatDateTime('ddd dd.mm.yyyy', Params[0], fs);
   end;
end;
Im Fastreport trägst Du dann folgendes in das Memo ein, um die Funktion aufzurufen (Achtung, Datumsformatierung löschen, da String zurückgegeben wird!):
Zitat von FastReport 4.0:
[MyDateTimeToStr(<Date>)]
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz