未为类型“日期”和类型“ DBNull”定义操作符“ <=”

时间:2018-10-25 13:04:06

标签: vb.net

我一直在试图解决这个问题。如果单元格为空,我会在DateRcvReal上不断收到错误消息。我正在通过使用<=比较两个字段,并且某些DateRcvReal是空单元格,它会为类型'Date'和类型'DBNull'引发运算符'<='的错误,我该如何解决这个问题。在VB.net上还是新手

If e.VisibleIndex > -1 And e.DataColumn.FieldName.StartsWith("DateProm") Then
                If IsDate(CType(sender, ASPxGridView).GetRowValues(e.VisibleIndex, New String() {"DatePromReal"})) Then
            If (CType(sender, ASPxGridView).GetRowValues(e.VisibleIndex, New String() {"DatePromReal"}) <= CType(sender, ASPxGridView).GetRowValues(e.VisibleIndex, New String() {"DateRcvReal"})) Then

                e.Cell.BackColor = Drawing.ColorTranslator.FromHtml("#F42121")
                e.Cell.ForeColor = Drawing.Color.White

            End If

2 个答案:

答案 0 :(得分:1)

尝试这不是isDBNULL函数

IF NOT IsDbNull((CType(sender, ASPxGridView).GetRowValues(e.VisibleIndex, New String() {"DatePromReal"})) AndAlso
(CType(sender, ASPxGridView).GetRowValues(e.VisibleIndex, New String() {"DatePromReal"}) <= CType(sender, ASPxGridView).GetRowValues(e.VisibleIndex, New String() {"DateRcvReal"})) Then

答案 1 :(得分:0)

最简单的方法是将您的代码放在try / catch块中,让它在错误的比较中抛出错误,然后在catch块中执行适当的操作(忽略错误,记录错误,投诉等)。

一种更好的方法是在使用单元格内容之前测试它们是否为空,并使用catch块来捕获真正的意外情况。

此外,请注意将布尔值与空字段进行比较。 VB对布尔值和null进行假设,因此认为null和false相等。

简而言之,在尝试将其与某些内容进行比较之前,请确保该单元格中有一个合理的值(不是null,不是空字符串,不是什么)。