InvalidCastException при разборе дат в VB.NET - PullRequest
1 голос
/ 03 марта 2010

Я пытаюсь разобрать даты, введенные в TextBox, в значение DateTime, но продолжаю получать исключение в методе TryParseExact. То, что я пытаюсь сделать, это:

DateTime.TryParseExact(tbAddDate.Text.Trim, "yyMMdd", New CultureInfo("sv-SE"), DateTimeStyles.None, row.Date)

Это вызывает исключение InvalidCastException с сообщением «Преобразование из типа« DBNull »в тип« Дата »недопустимо». Я понимаю, что происходит, что он пытается установить row.Date для DBNull, который не является допустимым значением для DateTime. Я не понимаю, почему он пытается это сделать, поскольку в документации указано, что для него должно быть задано MinValue, а не DBNull.

Как знаменатель, я знаю, что могу решить многие из этих проблем с помощью DateTimePicker, но клиент чувствует, что он очень неуклюжий, поскольку невозможно вводить даты непосредственно с клавиатуры.

1 Ответ

1 голос
/ 03 марта 2010

Кажется, что (как предполагает комментарий Magnifico) проблема строго связана с тем, что вы передаете row.Date в качестве аргумента result . Это должно происходить, когда код пытается присвоить row.Date с помощью Date.MinValue (если документация неточна, что менее вероятно в этом сценарии). Я бы посоветовал вам передать другой аргумент result и использовать его значение для обновления row.Date после вызова TryParseExact. Это может быть не окончательное постоянное решение, но оно должно помочь вам проверить эту ошибку и найти причину исключения InvalidCast.

Sidenote: возможно, этот row.Date не принимает Date.MinValue в качестве допустимого значения, то есть: row.Date может быть готов принимать только даты с 01.01.2000 года и Date.MinValue возвращает 01/01 / 0001.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...