Vb.net 未为类型“Date”和类型“DBNull”定义运算符“

Vb.net 未为类型“Date”和类型“DBNull”定义运算符“,vb.net,Vb.net,我一直在想办法。如果单元格为空,则DateRcvReal上会不断出现错误。我正在使用比较两个字段,请尝试这不是isDBNULL函数 IF NOT IsDbNull((CType(sender, ASPxGridView).GetRowValues(e.VisibleIndex, New String() {"DatePromReal"})) AndAlso (CType(sender, ASPxGridView).GetRowValues(e.VisibleIndex, New String()

我一直在想办法。如果单元格为空,则DateRcvReal上会不断出现错误。我正在使用比较两个字段,请尝试这不是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

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

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

另外,要小心比较布尔值和空字段。VB对布尔值和null值进行假设,因此认为null值和false值相等


简而言之,确保在单元格中没有一个空值,而不是一个空字符串,而不是在尝试将它与某个东西进行比较之前,没有任何东西。

添加一个DbNULL检查,用一个值或任何你的需求定义替换NULL。NULL是一种状态,而不是一个值。@JacobH VB有一些奇怪的行为,这些行为是.Net之前版本的保留,有些只是我奇怪的设计选择。在这一点上,任何人都做不了什么。现在可以了。如果DateRcvReal是空值,我该如何添加?如果DateRcvReal的颜色为F42121,我该如何添加?如果IsDbNullCTypesender,ASPxGridView.GetRowValuese.VisibleIndex,新字符串{DatePromReal},那么在DatePromReal中的所有空单元格中添加红色是不起作用的。如果日期小于今天,请将其保留为红色
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