DateTimePicker Problem
-
Hallo,
ich habe ein Problem mit einem DateTimePicker.
Ich lasse den User ein Datum mit einem DateTimePicker auswählen, und speicher die Auswahl anschließend in einem DataTable.
Sollange man die Windowsregionaleinstellungen auf Deutschland(Deutsch) hat, funktioniert das auch einwandfrei.
Aber wenn man auf Englisch(USA) stellt, kommt folgende Fehlermeldung:
Die Zeichenfolge wurde nicht als gültiges DateTime erkannt. <5/27/2010 8> konnte nicht in der Date-Spalte gespeichert werden. Erwarteter Typ:DateTime.
Merkwürdig finde ich den 8 hinter der 2010, das scheint die erste Ziffer der Uhrzeit zu sein.
So lese ich das ausgewählte Datum aus:dateTimePicker1->Value
Kann mir jemand sagen wie ich den Fehler wegbekomme?
-
Die Amis schreiben das Datum ja auch anders. Wird da nicht Monat und Tag vertauscht oder so ähnlich?
Schau dir mal das DateTimeFormat bzw CultureInfo an. Du könntest das z.B. mit ner if Abfrage vorher prüfen...
-
Ja, ist schon klar das die das anders schreiben, aber wenn mein DataTable eine Spalte im DateTime Format hat, sollte das doch da auch drin gespeichert werden, oder?
Wenn ich das mit einer if anweisung prüfe, müsste ich ja alle schreibweisen aller Länder überprüfen.
-
USA schreibt das Datum mm/dd/yyyy also 05/29/2010.
Wenn Du ein anderes Format in Deiner DB festgelegt hast, wird das Schwierigkeiten geben.Ich lege Grundsätzlich Datumsfelder in einer DB immer als Textfelder fest und überprüfe das Format im Programm.
-
Ich habe gar kein Format festgelegt, nur das es ein DateTime Feld ist.
Und der DateTimePicker gibt DateTime aus, daher verstehe ich nicht warum das nicht geht.
Ich habe mehrere Geldberechnungen in dem Programm, die alle mit Datentyp Decimal rechnen.
Das funktioniert ohne Probleme, ob man auf USA, China oder sonst was gestellt hat.
Die habe ja auch alle unterschiedliche schreibweisen bei den Geldbeträgen. Und alles wird ohne Probleme in den DataTable geschrieben, egal welches Land.
-
Foxy79 schrieb:
Ich habe gar kein Format festgelegt, nur das es ein DateTime Feld ist.
Mach das doch Weg, dahinter liegt ein Format...nämlich das Systemdatumsformat.
-
Wie meinst du das weg machen?
Ich muss doch wenn ich den DataTable erstelle den Typ der Spalte angeben.
Ich weiß nicht wie du das meinst.
-
Doug_HH schrieb:
Ich lege Grundsätzlich Datumsfelder in einer DB immer als Textfelder fest und überprüfe das Format im Programm.
oder eben direkt via sql
select to_char (datum, 'dd.mm.yyyy hh24:mi:ss')
dann wird direkt vor der Ausgabe das Datum nach deinen Angeben ausgegeben
-
Das Problem ist aber bei der Eingabe, nicht bei der Ausgabe.
-
Kann es sein, dass du bei jeder DataTable vegessen hast die Locale und DisplayExpression Eigenschaft zu setzen? Und dadurch der Konflikt zwischen Datum liegt in X vor wird aber in Y erwartet?