Datum konvertieren
-
Hi, hier der Code:
DateTime dAnnahmeDatum = Convert::ToDateTime(this->Annahmedate->Text);
String^ sAuftragsErsteller = this->Auftragsannehmer->Text;
String^ sTitel = this->Titel->Text;
DateTime dTerminDatum = Convert::ToDateTime(this->TerminDate->Text);this->tbl_Auftrag_AllgTableAdapter->InsertNeuerAuftrag(sAuftragsErsteller, dAnnahmeDatum, sTitel, dTerminDatum, Convert::ToString('NULL'), Convert::ToBoolean('NULL'), Convert::ToDateTime(0), Convert::ToBoolean('NULL'), Convert::ToDateTime(0), Convert::ToString('NULL'));
Kompilieren klappt einwandfrei, aber beim Schreiben in die datenbank sagt er,
dass die Konvertierung von date in int32 ungültig wäre.Pascal
-
this->tbl_Auftrag_AllgTableAdapter->InsertNeuerAuftrag(sAuftragsErsteller, dAnnahmeDatum, sTitel, dTerminDatum, Convert::ToString('NULL'), Convert::ToBoolean('NULL'), Convert::ToDateTime(0), Convert::ToBoolean('NULL'), Convert::ToDateTime(0), Convert::ToString('NULL'));
In der Doku steht, dass Int32 kein gültiger Parameter für Convert::ToDateTime(..) wäre. Das geht also nicht.
Übergib doch DateTime::Now oder versuchs mit nullptr.
Simon
-
Ich habe auch schon probiert Convert::ToDateTime('NULL'), aber das hat auch nicht geklappt. Das Problem ist, dass ich ihm irgendwie sagen muss, dass er nichts oder einen NULL-Wert in die Datenspalte schreiben muss. Weglassen kann ich die Parameter ja leider nicht.
Pascal
-
Ich meinte:
this->tbl_Auftrag_AllgTableAdapter->InsertNeuerAuftrag(sAuftragsErsteller, dAnnahmeDatum, sTitel, dTerminDatum, Convert::ToString('NULL'), Convert::ToBoolean('NULL'), DateTime::Now, Convert::ToBoolean('NULL'), DateTime::Now, Convert::ToString('NULL'));
oder
this->tbl_Auftrag_AllgTableAdapter->InsertNeuerAuftrag(sAuftragsErsteller, dAnnahmeDatum, sTitel, dTerminDatum, Convert::ToString('NULL'), Convert::ToBoolean('NULL'), nullptr, Convert::ToBoolean('NULL'), nullptr, Convert::ToString('NULL'));
-
Es gibt doch für die Spalten einen Parameter das die Zelle einen Wert haben muss oder nicht. Könnte der das Problem sein?
-
Ja, das stimmt, lässt sich aber bei datumsfeldern nicht auf null setzen. Irgendwie blöd.
Pascal
-
Und wenn du ein Datum nimmst das nie gebraucht wird. Dann könntest du dieses Beispielsweise beim Anzeigen filtern und das Feld leer lassen.
-
Ich kann mir DateTime::MinValue ein leeres Datum angeben, genau das was ich gesucht habe. Danke für all eure Vorschläge.
-
DateTime ist im folgenden format "00/00/0000 00:00:00" es kann also nicht funktionieren dies zu int zu konvertieren.
du kannst allerdings auf die einzelnene komponenten des DateTime zugreifen also auf tag,monat,jahr usw... die einzeln aus dem datetime rausholen und z.b. zu int konvertieren
-
Danke, da hast du natürlich recht. Ich ging bei meiner Annahme davon aus, das nur das Datum und nicht die Uhrzeit angegeben werden. Aber es klappt ja jetzt.
Pascal