2009-11-02 43 views
0

使用VB.NET从数据库填充datetimepicker中的值

我想从数据库中显示datetimepicker中的日期。

代码。

cmd= new sqlcommand("select date from table1", con) 
dr = cmd.executereader 
while dr.read() 
datetimepicker1.value.add(dr("Date")) 
end while 
dr.close 

但是,示值误差为指定的强制转换无效

如何获得价值?

需要vb.net代码帮助

回答

1

DateTime.Add不会做你认为它的作用。它将TimeSpan(不是日期)添加到现有日期。在你的情况下,你有一个日期,而不是一个时间跨度,并且希望将它设置在datimepicker上,而不是给它添加一段时间。

你应该这样做,而不是:

datetimepicker1.Value = dr("Date") 

如果博士( “日期”)是Object类型的,你需要明确地将其转换为一个Date对象是这样的:

datetimepicker1.Value = CDate(dr("Date")) 
1

,就可以把价值为DateTime,问题是,博士(“日期”)是一个字符串,在你的代码你做一个字符串值等于日期时间,这就是你看到的错误。尝试把

datetimepicker1.value.add(DirectCast(DR( “日期”),日期))

这应该将字符串值转换为DateTime值。您可能想要添加到代码中的一件事是检查以确保dr(“Date”)的值实际上是日期而不是其他值类型。

希望这会有所帮助!

+0

另一种获取日期值的方法是使用datetimepicker1.value = DirectCast(dr(“Date”),DateTime)) – ajrawson

+2

Erm - 这不是很正确dr(“Date”)不是一个字符串吗?它可能默认为一个字符串,但如果没有明确输入的话,它可能是一个对象值。 – Murph

+0

墨菲你是对的,它是一个对象。我的不好,是从那个记忆中抽出来的,谢谢你纠正我。 – ajrawson