无法在System.Decimal和System.String上执行“Like”操作

时间:2014-03-24 13:50:32

标签: vb.net

我想根据以下方法在我的datagridview上使用过滤器:

 dt = ExecuteSelect(QueryCondition, IDWindow).Tables(0)
        _textFilters = ""

            Dim first As Boolean = True

            For Each f As field In fields
                If f.Value.Length > 0 Then

                    If Not first Then
                        _textFilters += " and "
                    End If
                _textFilters &=  f.Field &  " like '%" & f.Value & "%'"
                    first = False
                End If
        Next

        dt.DefaultView.RowFilter = _textFilters

我在行

中收到错误
 dt.DefaultView.RowFilter = _textFilters

无法表演'喜欢' System.Decimal和System.String

上的操作

因为我的数据库表中有一些十进制字段。

但如果我使用:

 Dim view As DataView = New DataView(grille.DataSource)
_textFilters = ""
Dim first As Boolean = True
 For Each f As field In fields
                If f.Value.Length > 0 Then
                If Not first Then
                    _textFilters += " and "
                End If
                Select Case f.Field.GetType.ToString
                    Case "String"
                        _textFilters &= f.Field & " like '%" & f.Value & "%'"
                    Case "DateTime"
                    Case Else
                        _textFilters &= f.Field & ">=" & f.Value
                End Select

                    first = False
                End If
        Next

        view.RowFilter = _textFilters

代码不会发送错误,但过滤器不起作用。

希望我明白

提前致谢

2 个答案:

答案 0 :(得分:2)

Like运算符纯粹用于叮咬。如果要过滤十进制数据类型,则应使用以下运算符之一:<,>,=。

答案 1 :(得分:0)

假设f.Field是数字类型,使用ToString方法应该有效:

_textFilters &=  f.Field.ToString() &  " like '%" & f.Value & "%'"