Datumsformat kommt Amerikanisch

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
paulderfinne
Beiträge: 65
Registriert: Mi 27. Feb 2013, 18:24
OS, Lazarus, FPC: Linux (L 0.9.30.4-1.1 FPC 2.6.0)
CPU-Target: 32Bit

Datumsformat kommt Amerikanisch

Beitrag von paulderfinne »

Bin neu hier und möchte erstmal ein kräftiges HALLO in die Runde schmeißen. Bin ein absoluter Lazarus Neuling und bitte daher um Milde, wenn meine Fragen naiv klingen.

Als Erstes wollte ich eine klitzekleine Datenbankanwenung basteln. Ich habe dazu 3 Tabellen in MySQL kreiert und sie auch ein bisschen mit Daten gefüllt. Es gelang mir auch mit ZeosAccess die Datenbank zu öffnen und anuzeigen. Nun kommen die ersten Probleme: In meiner Anwendung wird ein Datumsfeld aus einer Datenbanktabelle im amerikanischen Format angezeigt. Wahrscheinlich weil ich meine Locales so gestellt habe.
Ausgabe bei locale:
LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
Nun möchte das Datum trotzdem deutsch haben. Was tun?

Achja, falls nötig:

Ich arbeite mit einem Debian wheezy:

Linux version 3.2.0-4-686-pae (debian-kernel@lists.debian.org) (gcc version 4.6.3 (Debian 4.6.3-14) ) #1 SMP Debian 3.2.35-2

Lazarus Version 0.9.30.4-1.1

paulderfinne
Beiträge: 65
Registriert: Mi 27. Feb 2013, 18:24
OS, Lazarus, FPC: Linux (L 0.9.30.4-1.1 FPC 2.6.0)
CPU-Target: 32Bit

Re: Datumsformat kommt Amerikanisch

Beitrag von paulderfinne »

Jetzt antworte ich mir selbst. Also wenn ich das Formular (besser das ganze Programm) übersetze, bekomme ich plötzlich doch ein Datum in der richtigen Reiehenfolge, allerdings mit einem "-" getrennt: 25-2-13. Ich würde gerne da eingreifen und ein "richtiges Datum" ausgeben.

Dann habe ich den DBCalendar eingebunden und mit der Datenbank verbunden. Wenn ich nun in einem Datensatz auf das Datum gehe, zeigt der DBCalendar das DAtum an. Ist ja lustug, aber ich möchte das umgekehrt. Also, wenn ich auf ein Datum im Kalender gehe, dann soll das in das Datumsfeld. Also insgesamt die Frage, wie ich die einzelnen Felder in einem Grid anspreche.

EgonHugeist
Beiträge: 93
Registriert: Di 17. Apr 2012, 22:41

Re: Datumsformat kommt Amerikanisch

Beitrag von EgonHugeist »

Zeos greift immer auf die aktuallen FormatSettings.Date..Format zu. Stelle diese um, wie gewünscht, und es sollte funzen.
ZeosDevTeam

sierdolg
Beiträge: 66
Registriert: Mi 24. Okt 2012, 15:50

Re: Datumsformat kommt Amerikanisch

Beitrag von sierdolg »

Mit dem Problem (die Anwendung zeigt ein US-Währungsformat an, während die BDE-Vorschau die korrekten lokalen Einstellungen widerspiegelt) habe ich mich heute auch länger herumgeschlagen.
Die Lösung, die ich eher zufällig fand, war dann, in den uses-Abschnitt der Unit (welche das Anwendungsfenster repräsentiert), noch die Unit "clocale" aufzunehmen.

uses
Classes, SysUtils, db, mysql50conn, FileUtil, Forms, Controls, Graphics,
Dialogs, DBGrids, DbCtrls, ComCtrls, StdCtrls, Menus, ExtCtrls, PrintersDlgs,
ZConnection, ZDataset, types ,
clocale; // ohne clocale unter Linux keine länderspezifischen globalen Variablen, sondern nur US-Defaults!

Als absoluter Lazarus-Neuling (und auch ohne Delphi-Vergangenheit) ist es mir nicht möglich, zu beurteilen, ob das die beste aller Möglichkeiten ist. Besser als mit lokalen Variablen an vielen Stellen die entsprechenden "zuständigen" globalen Variablen zu überschreiben, was mancherorts vorgeschlagen wurde, dürfte es immerhin sein...

Nachtrag: Gilt auch für das Währungsformat an Currency-Werten in DBEdit-Feldern und DBGrids. Während bei diesen im Entwurfsmodus korrekt Euro erscheinen, zeigt das Binary die Beträge mit Dollarsymbol an, solange man clocale nicht einbindet. [Stand: Linux 64bit, Lazarus 1.2.4, ZEOS 7.1.3.a]
Zuletzt geändert von sierdolg am Do 4. Sep 2014, 12:15, insgesamt 1-mal geändert.

EgonHugeist
Beiträge: 93
Registriert: Di 17. Apr 2012, 22:41

Re: Datumsformat kommt Amerikanisch

Beitrag von EgonHugeist »

Habe ein Patch implementiert, welches das Datumsformat automatisch erkennt.

Wird mit 7.0.4 und 7.1.1-Beta erscheinen. Ist jedoch bereits im SVN verfügbar.

Grüße Michael
ZeosDevTeam

Antworten