2016-10-04 11 views
0

すべて!ちょうど私がここに新しいことを言って開始したい! :) 私もコーディングでかなり新しいので、私と穏やかになりますDataView RowFilterのInvalidCastException

DataTableにフィルタを適用しようとすると、InvalidCastExceptionエラーが発生します。事は、私は条件付きである2つのフィルタを適用しようとしています。 は、ここで私が持っているものだ:

If cbValue1.Text <> "" Then 
    dv.RowFilter = "Value1 " + cbValue1.Text + " " + CStr(nudValue1.Value) AndAlso If(CheckBox1.Checked = True, " AND [Value2] = 'Mon'", "") 
End If 

私が手にエラーが言う、「文字列からの変換 『を値1 = 1500 <』 『ブール』と入力することは有効ではありません。」

私はこの部分を持っている場合はそれだけで正常に動作します:

If cbValue1.Text <> "" Then 
    dv.RowFilter = "Value1 " + cbValue1.Text + " " + CStr(nudValue1.Value) 
End If 

誰かが間違っているものを私に示しすることはできますか?

+0

最初にあなたのフィルタのSQLを構築し、次に割り当てますこれをRowFilterに渡します。 'AndAlso If'などは何かを上げています。 –

+0

私はあなたが何を意味するのかよくわかりません...私は自分のDataTableではなく、.txtファイルとしてSQLデータベースを使用しています。 – rsprodftw1

答えて

0

あなたはAndAlso Operatorを間違って使用しています。これはブール式として処理されます:

"Value1 " + cbValue1.Text + " " + CStr(nudValue1.Value) 

はこのように、複数行のコードまたは別の方法であなたのRowFilterを構築してみてください。

If cbValue1.Text <> "" Then 

    Dim strRowFilterExpression As String = "Value1 " & cbValue1.Text & " " & CStr(nudValue1.Value) 

    If CheckBox1.Checked Then 

     strRowFilterExpression += " AND [Value2] = 'Mon'" 

    End If 

    dv.RowFilter = strRowFilterExpression 

End If 
+0

Aha!うわー、ありがとう、私は実際に条件に基づいてそのような文字列に追加することを考えなかった...私はまだそれを試していないが、それは完全に動作するはずです!本当にありがとう :) – rsprodftw1

関連する問題