日期列的一个意外

大多数时候,我们可以直接使用日期列的值。
例如假定当前表有一个日期列,可以在命令窗口正常执行下面的代码:

Dim m As Integer = CurrentTable.Current("日期").Month
Dim
d As Date = CurrentTable.Current("日期").AddYears(360)

但是如果你在命令窗口执行下面的代码,却会出现错误提示:

Dim t As TimeSpan
t =
Date.Today - CurrentTable.Current("日期")
OutPut.Show(
"距今天数:" & t.TotalDays)

要使上面的代码正确执行,可以修改为:

Dim t As TimeSpan
t =
Date.Today - CDate(CurrentTable.Current("日期"))
OutPut.Show(
"距今天数:"
& t.TotalDays)

上面的代码用CDate将列中的值转换为日期,你也许会奇怪,本来就是日期,何来转换之说,这是因为我们从某列取值的时候,不管列类型如何,得到的始终是一个Object类型的值,但是Visual Basic会自动判断真实的值类型,所以我们直接使用即可。唯一的例外就是上面这个例子:日期之间相减的时候,用CDate函数明确地转换一下。

除了用CDate转换外,还可以:

Dim t As TimeSpan
Dim
d As Date = CurrentTable.Current("日期")
t =
Date.Today - d
OutPut.Show(
"距今天数:"
& t.TotalDays)


本页地址:http://www.foxtable.com/webhelp/topics/1517.htm