以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 关于日期型字段 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=8068) |
||||
-- 作者:sophia -- 发布时间:2010/9/2 18:07:00 -- 关于日期型字段 窗口中有一DateTimePicker控件,绑定到表中的日期型列,当在控件中不输入日期,然后保存表的时候,默认的把"0001-01-01"保存到表中的日期型字段中,这个有办法改变吗?就是不输入日期的时候,保存后该字段就为空值,而不是现在的默认值。 另外:如果我在窗口中把TextBox绑定到日期型列,虽然该日期型列的日期时间格式设置为:date,但是窗口中还是显示这样的格式: 2010-09-09 0:00:00,怎么改回正常啊? |
||||
-- 作者:czy -- 发布时间:2010/9/2 18:53:00 -- 以下是引用sophia在2010-9-2 18:07:00的发言:
窗口中有一DateTimePicker控件,绑定到表中的日期型列,当在控件中不输入日期,然后保存表的时候,默认的把"0001-01-01"保存到表中的日期型字段中,这个有办法改变吗?就是不输入日期的时候,保存后该字段就为空值,而不是现在的默认值。
我还没碰到过这种事情。 |
||||
-- 作者:sophia -- 发布时间:2010/9/2 19:09:00 -- CZY版主,请看看
|
||||
-- 作者:czy -- 发布时间:2010/9/2 19:15:00 -- 如果是这种操作对话我会这样做。
Dim dr1 As Row =Tables("表A").current |
||||
-- 作者:sophia -- 发布时间:2010/9/2 19:27:00 -- 我想问的是为什么把“0001-01-01”写进去了呢? |
||||
-- 作者:czy -- 发布时间:2010/9/2 19:30:00 -- 给你贴段帮助:
空值的判断 假定某个表的金额列,由单价、数量、折扣三列计算得出,此外年、月两列,由日期列计算得出。 Dim dr As DataRow = e.DataRowSelect Case e.DataCol.Name Case "数量","单价","折扣" dr("金额") = dr("数量") * dr("单价") * (1 - dr("折扣")) Case "日期" dr("年") = dr("日期").Year dr("月") = dr("日期").Month End Select 上面的代码看上去很完美,金额、年、月三列都能自动计算得出,可真的没问题吗? 所以为了“完美”,我们将DataColChanged事件代码改为: Dim dr As DataRow = e.DataRowSelect Case e.DataCol.Name Case "数量","单价","折扣" dr("金额") = dr("数量") * dr("单价") * (1 - dr("折扣")) Case "日期" If dr.IsNull("日期") Then \'如果日期列为空 dr("年") = Nothing dr("月") = Nothing Else dr("年") = dr("日期").Year dr("月") = dr("日期").Month End If End Select 这样输入日期,年、月列的值能自动计算得出,删除日期,年、月列也会自动被清空。 |
||||
-- 作者:czy -- 发布时间:2010/9/2 19:32:00 -- 再谈空值
……
在某列内容为空的时候,会根据不同的列类型,返回不同的值,规则如下: 字符列:"" |
||||
-- 作者:sophia -- 发布时间:2010/9/3 11:14:00 -- 以下是引用sophia在2010-9-2 18:07:00的发言:
另外:如果我在窗口中把TextBox绑定到日期型列,虽然该日期型列的日期时间格式设置为:date,但是窗口中还是显示这样的格式: 2010-09-09 0:00:00,怎么改回正常啊? 这个问题是什么原因呢? |
||||
-- 作者:狐狸爸爸 -- 发布时间:2010/9/3 11:24:00 -- 不存在单独的时间型字段。 如果不想显示日期的部分,用DateTimePicker输入,选择合适的日期时间格式。 |