я получаю следующее сообщение об ошибке на моем веб-форму:Пустой TextBox1.Text дает мне ошибку
Cast from string "" to type 'Date' is not valid.
Я предполагаю, что это из-за этой линии (но мое предположение может быть неправильным):
command.Parameters.Add(New SqlParameter("col3", SqlDbType.DateTime, 8)).Value = some_date_parameter
Что в функции:
Function ProcessAction(ByVal col1 As Integer, ByVal col2 As String, ByVal col3 As Date, ByVal col4 As Integer, ByVal col5 As String) as something
'...
command.Parameters.Add(New SqlParameter("@col1", SqlDbType.Int, 4)).Value = col1
command.Parameters.Add(New SqlParameter("@col2", SqlDbType.VarChar, 255)).Value = col2
command.Parameters.Add(New SqlParameter("@col3", SqlDbType.DateTime, 8)).Value = col3
command.Parameters.Add(New SqlParameter("@col4", SqlDbType.Int, 4)).Value = col4
command.Parameters.Add(New SqlParameter("@col5", SqlDbType.VarChar, 255)).Value = col5
'...
Return something
End Function
Что называется с помощью кнопки:
Sub ButtonClick(ByVal Source As Object, ByVal E As EventArgs)
'...
structRecord = ProcessAction(TextBox1.Text, TextBox2.Text, TextBox3.Text, TextBox4.Text, TextBox5.Text)
'...
End Sub
Где structRecord
является:
Public Structure structRecord
Public col1 As Integer
Public col2 As String
Public col3 As Date
Public col4 As Integer
Public col5 As String
End Structure
Фактическая ошибка получает в этой строке во время выполнения, которая находится в ButtonClick
:
structRecord = ProcessAction(TextBox1.Text, TextBox2.Text, TextBox3.Text, TextBox4.Text, TextBox5.Text)
Как эта проблема может быть исправлена? Я в основном хочу, чтобы пользователь продолжал работу с остальной частью webapp, даже если TextBox3.Text
оставлен пустым.
Так вы думаете, что ошибка в настоящее время запускается из запроса, вместо 'Struct' который ожидающей' date' вместо '' String' для col3'? – oshirowanen
@oshirowanen: Нет. Я предлагаю вам сделать одну из двух вещей. Любое изменение ProcessAction для принятия всех строк и внутри него делает проверку или выполняет правильную проверку и конверсии до вызова ProcessAction. В любом случае, вам нужно протестировать и сделать преобразование вместо того, чтобы полагаться на неявное преобразование, когда вы знаете, что оно потерпит неудачу. – NotMe