0

Webフォームに次のエラーメッセージが表示されます。

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)

この問題はどのように修正できますか?基本的に、ユーザーがTextBox3.Text空のままになっている場合でも、残りのWebアプリを続行できるようにします。

4

2 に答える 2

0

通常、入力をテストして、有効または許容範囲内にあることを確認します。

日付の場合、値が日付に変換されることを確認し、変換される場合は、それをパラメーターとして渡します。有効な日付でない場合は、クエリにnull値を渡すことができます。

クエリは、日付またはnullを受け入れるのに十分スマートである必要があります。しかし、その質問がなければ、私はあなたを助けることができません。

于 2013-03-18T16:30:02.873 に答える
0

dateTime.TryParseメソッドを使用して、渡す文字列が有効な日付/時刻値であることを検証してみてください。

http://msdn.microsoft.com/en-us/library/system.datetime.tryparse.aspx

于 2013-03-18T16:33:06.070 に答える