Kein gültiges DateTime für Update

Deletemaster

Erfahrenes Mitglied
Hallo zusammen,

ich nerve schon wieder wegen meines DatumUpdates:

In meiner Tabelle sind einige Daten mit Geburtsdatum einige Ohne,
das Anzeigen der Daten in beiden Fällen klappt.
Allerdings bekomme ich, bei meinem Update (wenn das Feld txt_GeburtsDatum leer ist) die Fehlermeldung: "Die Zeichenfolge wurde nicht als gültiges DateTime erkannt"
Wie muss ich hier vorgehen, um ein leeres Feld zu akzeptieren?
Meine Funktion:

Code:
        private void GeburtsDatum_Aktualisieren()
        {
            string str_VRN = txt_VRN.Text;

            string str_GeburtsDatum = txt_GeburtsDatum.Text;
            str_GeburtsDatum = Convert.ToDateTime(str_GeburtsDatum).ToShortDateString();

            SqlCommand cmd_GebUpdate = new SqlCommand();
            cmd_GebUpdate.Connection = conn;
            cmd_GebUpdate.Parameters.Add("@vrn", txt_VRN.Text);
            cmd_GebUpdate.Parameters.Add("@geburtsdatum", str_GeburtsDatum);
            cmd_GebUpdate.CommandText = "UPDATE <Tabelle> SET geburtsdatum = @geburtsdatum WHERE vrn = @vrn";
            cmd_GebUpdate.ExecuteNonQuery();
        }

Habe versucht:
IF TextBox leer DateTime _GeburtsDatum = DBNull
Aber das funktioniert nicht so richtig, weil hier DBNull als Variable fungieren würde.

Danke für Eure Hilfe
 
Also ich hab jetzt schon überall nachgesehen aber keine Lösung gefunden.
Wie muss ich in meinem Beispiel DBNull einsetzen, damit in die Tabelle NULL geschrieben wird und keine Fehlermeldung mehr bei einem leeren Textfeld erscheint?

Danke für Eure Hilfe
 
Ich habe eine einfache Lösung gefunden:

Code:
private void GeburtsDatum_Aktualisieren()
{
           string str_VRN = txt_VRN.Text;

           string str_GeburtsDatum = txt_GeburtsDatum.Text;

           if (txt_GeburtsDatum.Text == "")
           {
               SqlCommand cmd_GebUpdate = new SqlCommand();
               cmd_GebUpdate.Connection = conn;

               cmd_GebUpdate.Parameters.Add("@vrn", txt_VRN.Text);
txt_GeburtsDatum.Text);

               cmd_GebUpdate.CommandText = "UPDATE <tabelle> SET geburtsdatum = null WHERE vrn = @vrn";

                cmd_GebUpdate.ExecuteNonQuery();
            }
            else
            {
                SqlCommand cmd_GebUpdate = new SqlCommand();
                cmd_GebUpdate.Connection = conn;

                cmd_GebUpdate.Parameters.Add("@vrn", txt_VRN.Text);
                cmd_GebUpdate.Parameters.Add("@GeburtsDatum", txt_GeburtsDatum.Text);

                cmd_GebUpdate.CommandText = "UPDATE <tabelle> SET geburtsdatum = @GeburtsDatum WHERE vrn = @vrn";

                cmd_GebUpdate.ExecuteNonQuery();

            }
        }

Bei dieser Variante wird keinerlei Typumwandlung vorgenommen, die mir immer immer als Stichwort gegeben wurde.
Das Datum wird intern als DateTime in die Tabelle geschrieben

Wenn jemand eine "vernünftigere" Lösung hat, BITTE mitteilen.

Danke
 
Zurück