AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Datum in dbGrid/dbEdit über TAdoQuery formatiert anzeige

Datum in dbGrid/dbEdit über TAdoQuery formatiert anzeige

Ein Thema von norwegen60 · begonnen am 26. Feb 2021 · letzter Beitrag vom 26. Feb 2021
Antwort Antwort
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
466 Beiträge
 
Delphi 10.3 Rio
 
#1

Datum in dbGrid/dbEdit über TAdoQuery formatiert anzeige

  Alt 26. Feb 2021, 15:47
Hallo zusammen,

gibt es eine Möglichkeit, das Datums-Format meiner Anwendung möglichst zentral so einzustellen, dass es in allen dbComponents im gleichen Format angezeigt wird?
Keinenfalls soll das Format des PC's geändert werden.
Trotzdem soll die Anwendung nur im ISO-Format anzeigen "YYYY-MM-DD HH:MM:SS". Es muss verhindert werden, dass man bei einem Report oder PrintScreen nicht weiß ob mit 10\05\2021 Mai oder Oktober gemeint ist.

Ich weiß, dass ich das Format z.B. per TDateTimeField(DataSet.FieldByName('MeinFeldname')).DisplayFormat := 'YYYY-MM-DD HH:MM:SS'; oder im Object Inspector einstellen kann. Dann müsste ich aber jedes Feld vorab definieren. Bei manchen Querys werden aber je nach Fall andere Felder zurück geliefert.

Ich verwende Delphi XE mit TAdoConnection und TAdoQuery, TAdoDataSet

Danke für die Unterstützung
Gerd
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.189 Beiträge
 
Delphi 7 Professional
 
#2

AW: Datum in dbGrid/dbEdit über TAdoQuery formatiert anzeige

  Alt 26. Feb 2021, 16:07
Dem Ereignis AfterOpen der TADOQuery ... ein Ereignis zuweisen und in dem dann ungefähr sowas:
Delphi-Quellcode:
  for i := 0 to ADOQuery.Fields.Count - 1 do begin
    case ADOQuery.Fields[i].DataType of
      ftDateTime : ADOQuery.Fields[i].DisplayFormat := 'YYYY-MM-DD HH:MM:SS';
      ftDate : ADOQuery.Fields[i].DisplayFormat := 'HH:MM:SS';
      ftTime : ADOQuery.Fields[i].DisplayFormat := 'YYYY-MM-DD';
    end;
  end;
ungetestet hingedaddelt
  Mit Zitat antworten Zitat
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
466 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Datum in dbGrid/dbEdit über TAdoQuery formatiert anzeige

  Alt 26. Feb 2021, 16:38
Ja, aber auch das müsste ich auf jeder TAdoQuery machen und davon gibt es in den unterschiedlichsten Forms 269 Stück. Dann noch 110 TADoDatasets und zum Überfluss auch noch 114 TADOTables

Gibt es nichts auf höherer Ebene?
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.189 Beiträge
 
Delphi 7 Professional
 
#4

AW: Datum in dbGrid/dbEdit über TAdoQuery formatiert anzeige

  Alt 26. Feb 2021, 17:15
Hast Du denn schon AfterOpen-Ereignisse?

Wenn nein, dann eine Routine schreiben und die allen entsprechenden Komponenten zuweisen.
Delphi-Quellcode:
procedure TForm1.ADOQryAfterOpen(DataSet: TDataSet);
var
          i : Integer;
begin
  for i := 0 to DataSet.Fields.Count - 1 do begin
    case DataSet.Fields[i].DataType of
      ftDateTime : DataSet.Fields[i].DisplayFormat := 'YYYY-MM-DD HH:MM:SS';
      ftDate : DataSet.Fields[i].DisplayFormat := 'HH:MM:SS';
      ftTime : DataSet.Fields[i].DisplayFormat := 'YYYY-MM-DD';
    end;
  end;
end;

// Irgendwo zentral z. B. sowas in der Art:
procedure TForm1.SetAfterOpen;
var
  i : Integer;
begin
  for i := 0 to ComponentCount do begin
    if Components[i] is TDataSet then TDataSet(Components[i]).AfterOpen := ADOQryAfterOpen;
  end;
end;
auch wieder nur hingedaddelt.
  Mit Zitat antworten Zitat
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
466 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Datum in dbGrid/dbEdit über TAdoQuery formatiert anzeige

  Alt 26. Feb 2021, 20:07
Die Idee ist natürlich gut. Aber die Querys verteilen sich auf 60 Forms und noch ein paat Datamoduls. Ich müsste durch alle durch und prüfen ob schon irgendwo das AfterOpen benutzt wird. Natürlich bräuchten gar nicht alle diese Formatierung aber auch das müsste ich von Fall zu Fall prüfen. Drum hatte ich gehofft man könnte so eine Formatierung z.B. schon der TConnection mitgeben

Trotzdem Danke für die Anregung

Wenn nicht noch ein super Tip rein kommt, werde ich durch alle Forms und die Queries die zum Anzeigen genutzt werden mit deinem Tip zentral "formatieren"
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.189 Beiträge
 
Delphi 7 Professional
 
#6

AW: Datum in dbGrid/dbEdit über TAdoQuery formatiert anzeige

  Alt 26. Feb 2021, 21:05
Wenn's Datum grundsätzlich im Programm im Format 'YYYY-MM-DD HH:MM:SS' sein soll / kann und nicht nur bei der Anzeige der Daten aus Querys ..., dann schau bitte mal nach TFormatSettings. Damit kannst Du das Datumsformat programmweit verändern, ohne dass das Auswirkungen auf das Systemdatum des PCs hat.

Eventuell reicht das ja dann schon aus.
  Mit Zitat antworten Zitat
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
466 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Datum in dbGrid/dbEdit über TAdoQuery formatiert anzeige

  Alt 26. Feb 2021, 22:41
Das war genau das was ich gesucht habe. Hätte meine Anfrage vielleicht nicht auf die DB beschränken sollen, aber 99% der Datums kommen aus der DB.

Nachdem ich das im OnCreate des Main-Forms implementiert habe, kommt (zumindest dort wo ich es auf die Schnelle kontrolliert habe) das Datum im gewünschten Format
Delphi-Quellcode:
  FormatSettings.DateSeparator := '-';
  FormatSettings.DecimalSeparator := '.';
  FormatSettings.TimeSeparator := ':';
  FormatSettings.ShortTimeFormat := 'hh:nn:ss.zzz';
  FormatSettings.ShortDateFormat := 'yyyy-mm-dd';
  Application.UpdateFormatSettings := false;
In den DLL habe ich das selbe im Source der DLL implementiert. Da tritt beim Kompilieren aber die Warnung auf
Code:
[DCC Warning] Hamilton.dpr(61): W1048 Unsafe typecast of 'string' to 'TFormatSettings'
[DCC Warning] Hamilton.dpr(62): W1048 Unsafe typecast of 'string' to 'TFormatSettings'
[DCC Warning] Hamilton.dpr(63): W1048 Unsafe typecast of 'string' to 'TFormatSettings'
[DCC Warning] Hamilton.dpr(64): W1048 Unsafe typecast of 'string' to 'TFormatSettings'
[DCC Warning] Hamilton.dpr(65): W1048 Unsafe typecast of 'string' to 'TFormatSettings'
Ich könnte die Warnung abschalten, lieber wäre es mir aber zu wissen, warum sie in der DLL kommt

In der DLL dient es vor allem dazu Daten die in Text-Dateien geloggt werden korrekt zu formatieren. Dort wäre es also auch nicht der riesen Aufwand die paar Stellen explizit zu formatieren. WÜrde nur gerne wissen, ob ich da was besonders beachten sollte.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 05:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2023, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf