我有一个代码,可以从 datagridview
读取整数和日期值。k
值中的某些值中有空条目,我正在尝试让该应用忽略这些单元格,但我没有任何运气。该错误弹出在线上 j = datediff....
我尝试使用if语句
If DataGridView1.Rows(e.RowIndex).Cells(k).Value IsNot Nothing Then
但这仍然会产生一个错误,告诉我它不能将DBNull
条目转换为date
。
我看不到我在做什么错,因此会不胜感激。
For k = 8 To 52 Step 2
Dim j As Integer
If DataGridView1.Rows(e.RowIndex).Cells(k).Value IsNot Nothing Then
j = DateDiff(DateInterval.Day, DataGridView1.Rows(e.RowIndex).Cells(k).Value, DataGridView1.Rows(e.RowIndex).Cells(k - 2).Value)
If DataGridView1.Rows(e.RowIndex).Cells(k + 1).Value = 0 Then
If j > 7 Then
DataGridView1.Rows(e.RowIndex).Cells(k - 1).Value = 6
Else
End If
Else
End If
End If
Next k
如果您想获得更多帮助,以识别编译时间中可能的错误,请在项目或文件中设置Option Strict On
。
-
Nothing
和DbNull
不一样。 -
Nothing
是类型的默认值 -
DbNull
US类型代表数据库NULL
值。 - 只有
DbNull.Value
是可比的。
For k = 8 To 52 Step 2
Dim row As DataGridViewRow = DataGridView1.Rows(e.RowIndex)
If row.Cells(k).Value Is DBNull.Value Or row.Cells(k).Value Is Nothing Then Continue For
Dim firstDate As Date = DirectCast(row.Cells(k).Value, Date)
Dim secondDate As Date = DirectCast(row.Cells(k - 2).Value, Date)
Dim difference As TimeSpan = firstDate - secondData
If difference.Days > 7 AndAlso row.Cells(k + 1).Value = 0 Then
row.Cells(k - 1).Value = 6
End If
Next