我有一个 FormView,我从一个表(MS Access)中提取数据,然后将它(加上更多数据)插入到另一个表中。我的日期有问题。
第一个表有两个日期字段:date_submitted
和date_updated
。在一些记录中,date_updated
是空白的。这导致我在尝试插入第二个表时遇到数据不匹配错误。
这可能是因为我date_updated
将第一个表中的字段数据绑定到 FormView 上的 HiddenField 中。然后它从 HiddenField 中获取值并尝试将其插入到第二个表中:
Dim hfDateRequestUpdated As HiddenField = FormView1.FindControl("hfDateRequestUpdated")
myDateRequestUpdated = hfDateRequestUpdated.Value
'... It then attempts to insert myDateRequestUpdated into the database.
它在有值时起作用,但显然您不能在 Access 中的日期/时间字段中插入任何内容。我想我可以创建第二个不插入的插入语句date_updated
(在没有值时使用date_updated
),但这是唯一的方法吗?似乎应该有一种更简单/更少冗余的方式。
编辑:
好的。所以我尝试插入 SqlDateTime.Null、Nothing 和 DBNull.Value。SqlDateTime.Null 导致值 1/1/1900 被插入到数据库中。“Nothing”会导致它插入 2001 年 1 月 1 日。如果我尝试使用 DBNull.Value,它会告诉我它不能转换为字符串,所以也许我没有做一些完全正确的事情。无论如何,我希望如果没有要插入的内容,Access 中的字段将保持空白,但似乎它必须用一些东西填充它......
编辑:
我让 DBNull.Value 工作,它确实插入了一个完全空白的值。所以这是我的最终工作代码:
Dim hfDateRequestUpdated As HiddenField = FormView1.FindControl("hfDateRequestUpdated")
Dim myDateRequestUpdated = Nothing
If hfDateRequestUpdated.Value = Nothing Then
myDateRequestUpdated = DBNull.Value
Else
myDateRequestUpdated = DateTime.Parse(hfDateRequestUpdated.Value)
End If
感谢大家!