MSSQL DATE_FORMAT Query-String?

Norbert Eder

Erfahrenes Mitglied
Um Fehleingaben zu verhinden:

1) Select Statement ohne irgendwelche Formatierungen
2) Mit DataReader.GetDateTime oder Convert.ToDateTime in ein DateTime-Objekt stopfen
3) Als Control nicht 3 Felder verwenden sondern einen DateTimePicker
 

Deletemaster

Erfahrenes Mitglied
Hallo Norbert,
ich habe versucht Deinen Rat zu befolgen, irgendwie habe ich bei meinen Webforms in der ToolBox keine DateTimePicker zur Verfügung. Bei meinen Windows-Anwendungen steht dieser zur Verfügung.
Zumal ich den DateTimePicker nicht für die beste Lösung halte, wenn der User ein Geburtsdatum eintragen will muss er "ewig klicken", bis er beispielsweise das Datum 28.05.1947 "erreicht" hat.
Dafür sollten die TextBoxen sein. Da es bei MySql kein Problem war das Datum zu splitten, und Tages und Monatsangabe 2-stellig darzustellen habe ich gedacht, daß es bei MS SQL auch eine Möglichkeit gibt, das Datum "wieder zusammen zu setzen) und per Update einzutragen.
Zumal ich jetzt wieder einen Bug gefunden habe.
Sollte ein Datensatz kein Geburtsdatum enthalten und dieser Datensatz wird an anderer Stelle geändert bekomme ich die Fehlermeldung:
Die Zeichenfolge wurde nicht als gültiges DateTime erkannt (da die Felder leer sind.
Bei MySql war auch hier der Feldtyp Date und ein Update war hier möglich, auch wenn der Wert NULL war.
 

Norbert Eder

Erfahrenes Mitglied
Zuerst solltest du ein Statement verwenden und nicht für jeden "DatePart" ein eigenes. Das ist nicht performant und zusätzlich auch noch äußerst grauslich.

Verwende _ein_ Feld um das Datum bearbeiten zu lassen und nicht drei. Du kannst Eingaben ja mit einem Validator überprüfen lassen bevor die Daten gespeichert werden.

Wird ein Wert nicht als gültiges Datum erkannt, musst du dies natürlich abfangen. Stellt sich die Frage was du an dieser Stelle machst? Entweder kein Datum anzeigen oder eben einen Default-Wert. Wenn dies vor dem Speichern passiert, dann den Wert einfach nicht übernehmen.

@DateTimePicker: Hier kann das Datum auch über die Tastatur eingegeben werden - er muss also NICHT klicken.

Sämtliche String-Formatierungen: Wurde dir schon einige Male gesagt. String.Format verwenden. Übernimm die Formatierung der Werte in der "GUI" und nicht auf Datenbank-Ebene. Zumal es unterschiedliche Datenbanken gibt und diese unterschiedlich arbeiten und teilweise auch unterschiedliche Funktionen bereitstellen.
 

Nico Graichen

Erfahrenes Mitglied
Hi
Hallo Norbert,
ich habe versucht Deinen Rat zu befolgen, irgendwie habe ich bei meinen Webforms in der ToolBox keine DateTimePicker zur Verfügung. Bei meinen Windows-Anwendungen steht dieser zur Verfügung.
Richtig, den DateTimePicker gibt's im System.Web.UI.WebControls - Namespace nicht. Dafür aber das Calendar Control.
Alternativ könnte dir aber auch der WebDateChooser von Infragistics "helfen"
 

Neue Beiträge