DateTimePicker schreibt Datum nicht freiwillig in DB

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von SpaceyX.

    DateTimePicker schreibt Datum nicht freiwillig in DB

    Also, das Problem ist der DateTimePicker. Er ist an ein Feld eine DB gebunden und funktioniert eigentlich auch wie er soll.
    Nur eine Kleinigkeit krieg ich einfach nicht hin. Als Vorgabedatum habe ich das aktuelle Datum festgelegt. Wenn der Benutzer das einfach so übernimmt, wirds net in die DB geschrieben. Auch wenn der Benutzer den DTP öffnet und auf das aktuelle Datum klickt wirds net in die DB übernommen.
    Damit das Datum in die DB übernommen wird muß man folgende Schritte machen:

    1. DTP öffnen und beliebiges anderes Datum anklicken
    2. DTP verlassen
    3. DTP erneut öffnen und das heutige (aktuelle) Datum anklicken
    4. DTP wieder verlassen

    Was für ein Hassel!! Aber nur so wird das Datum in die DB geschrieben :wacko:. Ich hab mir schon an verschiedenen Stellen, inklusive direkt vor der Anweisung TableAdapter.Update(DataSet.Table) den Value von dem DTP anzeigen lassen und alles sieht korrekt aus. Keine Ahnung, warum ein Vorgabewert vom DTP nicht ohne weitere Aktionen vom Benutzer in die DB geschrieben wird.

    Kann mir da jemand weiterhelfen?

    Im Moment ist das ja total benutzerunfreundlich. Wenn ich das net gebacken kriege, fliegt der DTP wieder raus und ich nehme ne Textbox für das Datum. So hatte ichs vorher und da gabs keine Probleme. Ich hab den DTP nur reingenommen ums etwas benutzerfreundlicher zu machen, aber das war ja wohl ein Schuß in den Ofen.
    ich vermute, dein vorgegebenes Datum steht erstmal auf DBNull.

    Eine Möglichkeit wäre, der Column in der DataTable ein DefaultValue angedeihen zu lassen, nämlich den aktuellen Tag.
    Musste codeseitig machen - dem Designer ist das heutige Datum nicht bekannt.

    Ists ühaupt datenmodellmäßig korrekt, Nullwerte in deiner Datum-Spalte zuzulassen? Da musste evtl. noch anne DB schrauben.
    Nee, in der Datums-Spalte darf kein DBNull drinne stehn. Deshalb will ich dem DTP ja ein Default Datum (heutiger Tag) verpassen, damit da auf jeden Fall immer was drinne steht.
    Wenn der Benutzer auf "Neuer Datensatz" klickt, mach ich ein DTP.Value = Today(). Das Datum wird in dem DTP ja auch korrekt dargestellt. Nur in die DB kommt es nicht ohne den oben beschriebenen Riesenaufwand. Mit ner Textbox hats da vorher keine Probleme gegeben.

    ErfinderDesRades schrieb:

    (ich dachte, du wüsstest das, dass man nicht in den Controls rumhühnern soll.)
    Controls mit sinnvollen Default Werten vor zu belegen ist doch keine Rumhühnerei, oder? ;)

    Also ich hab an die Spalte der DB wieder ne Textbox gebunden (damit man die nicht sieht hab ich sie hinter nem Panel versteckt) und die Textbox aktualisiert sich von dem DTP.

    VB.NET-Quellcode

    1. Private Sub txtTaskDate_TextChanged(sender As System.Object, e As System.EventArgs) Handles txtTaskDate.TextChanged
    2. dtpTaskdate.Value = txtTaskDate.Text
    3. End Sub
    4. Private Sub dtpTaskdate_ValueChanged(sender As System.Object, e As System.EventArgs) Handles dtpTaskdate.ValueChanged
    5. txtTaskDate.Text = dtpTaskdate.Value
    6. End Sub


    Sicherlich nicht besonders elegant, aber funzt ohne große Coderei.