3

我有一个包含数据表的数据集,我枚举了该数据表中的所有行。尝试格式化该行中的列时,我遇到了异常。(部分)代码是:

For Each dr As DataRow In ds.Tables("records").Rows
    file = dr("timestamp").ToString("yyyyMMdd") & "~.wav"
Next

这会导致以下错误消息:

从字符串 yyyyMMdd 到 Integer 类型的转换无效。 (从荷兰语错误信息翻译成英语等价物)

dr("timestamp").GetType.FullName 结果为“System.DateTime”,所以我不明白为什么会遇到此异常,例如Now.ToString("yyyyMMdd")结果为“20091002”和“ Now" 与 dr("timestamp"), "System.DateTime" 的类型相同。

4

3 回答 3

16

尝试

For Each dr As DataRow In ds.Tables("records").Rows
    file = CDate(dr("timestamp")).ToString("yyyyMMdd") & "~.wav"
Next
于 2009-10-02T09:33:44.720 回答
0

我也遇到过这个问题,尽管在我的情况下,有问题的值是一个可为的日期/日期时间。

正如另一个答案所建议的那样,除了转换为日期外,您还可以调用.Value以获取不可为空的值(当然,在确保它实际上不是空值之后)。

于 2021-08-25T12:48:59.217 回答
-1

您是否确定您没有将变量“文件”声明为整数?

于 2009-10-02T09:38:02.440 回答