在vb.net中的日期字段中检查null

时间:2011-10-25 20:21:18

标签: .net vb.net ado.net

我有一个ASP.NET应用程序在返回null日期值时崩溃。

代码行是:

excelWorksheet.Cells("A" & xlRowCounter).Value = IIf(IsDBNull(dRow("sysdate")), "", Format(dRow("sysdate"), "MM/dd/yyyy"))

错误讯息:

  

错误:System.ArgumentException:参数'Expression'不是有效值。

我如何检查空日期,并在我的应用中用“”替换它?

5 个答案:

答案 0 :(得分:3)

请尝试使用If([condition], [true-part], [false-part])

If(IsDBNull(dRow("sysdate")), "", Format(dRow("sysdate"), "MM/dd/yyyy"))

如果您需要额外检查以无需测试,可以执行以下操作:

If(dRow("sysdate") Is Nothing Or IsDBNull(dRow("sysdate")), "", String.Format("{0:MM/dd/yyyy}", dRow("sysdate")))

答案 1 :(得分:2)

使用正确的If语句或新的if运算符。 if运算符与旧的IIF函数具有完全相同的语法,但仅评估它需要的参数。 IIF函数始终评估其所有参数。因此,即使dRow(“sysdate”)为null,也会对IIF函数的最后一个参数进行求值并导致错误。

答案 2 :(得分:0)

String类有一个IsNullOrEmpty方法。 你可以先用它来检查单元格,如果真的用空字符串填充它。

答案 3 :(得分:0)

您还可以使用Nullable DateTime:

Dim sysdate As DateTime? = dRow.Field(Of DateTime?)("sysdate")
Dim result As String = If(sysdate.HasValue, sysdate.Value.ToString("MM/dd/yyyy"), "")

我认为dRow是来自DataTable的DataRow

答案 4 :(得分:0)

我有同样的问题,但我正在使用vb.net。 如果使用oledb从excel工作表获取值,请首先检查单元格格式以获取其值。在这种情况下,格式是excel工作表中的日期,以及克里斯·邓威工作完成后提供的方式,大家好。