以文本方式查看主题
- Foxtable(狐表) (http://foxtable.net/bbs/index.asp)
-- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2)
---- 狐爸 关于 日期型数据 0001-01-01 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=8322)
|
-- 作者:卟离卟弃
-- 发布时间:2010/10/5 15:49:00
-- 狐爸 关于 日期型数据 0001-01-01
此主题相关图片如下:1.png
狐爸,关于日期默认值 0001-01-01 能不能改为 其它的...数据库认不了
假如,本行的日期来源于上一行的日期,当上一行的日期为空值的时候,本引在引用的时候就是 0001-01-01,诚请狐爸能不能把默认值改掉...(我知道可以通过判断,加一些代码可以不引用 空白日期 0001-01-01,有时候总忘记)
所以老是出现 0001-01-01的日期值,出现错误 如果更改起来容易,还请改一改....
此主题相关图片如下:2.png
|
-- 作者:狐狸爸爸
-- 发布时间:2010/10/8 8:31:00
--
你是不是还没有升级啊?
我记得新版本没有这个问题啊。
|
-- 作者:卟离卟弃
-- 发布时间:2010/10/9 8:20:00
--
早就升级了....
|
-- 作者:狐狸爸爸
-- 发布时间:2010/10/9 8:37:00
--
收到,有空我看看。
|
-- 作者:ddlzq
-- 发布时间:2010/11/9 10:43:00
--
0001-01-01 00:00 狐爸,这个日期为空的日期格式解决了吗?我刚下载11月8日版本还会出现这个啊,我保存时出现“对于造型说明无效的字符值"
|
-- 作者:狐狸爸爸
-- 发布时间:2010/11/9 11:14:00
--
自己改一下代码,如果上一行为空,就不要从上行集成值
|
-- 作者:ddlzq
-- 发布时间:2010/11/9 17:03:00
--
我这个不是从一个表的数据行来生成值的,代码大致如下:
我目前有一个表,想通过两个表中的“合同编号”对应关系来引用一个时间,另外想通过.RaiseDataColChanged()来更新,但一更新,另外一个数据源表中的合同还没有下达“内部生产预计完成时间”情况下,这面的表引出的时间格式即可 0001-01-01,然后保存时就会出错“对于造型说明无效的字符值”,请问我如何能避免这种问题呢?在哪部份能加判断不会更新这个空的时间值呢?
If e.DataCol.Name = "合同编号" Dim cmd As New SQLCommand Dim dt As DataTable Dim dr As DataRow = e.DataRow cmd.C cmd.CommandText = "SELECT * From {合同管理表} Where [内部生产单号] = \'" & dr("合同编号")& "\'"
dt = cmd.ExecuteReader If dt.DataRows.Count > 0 Then dr("合同生产预计完成时间") = dt.DataRows(0)("内部生产预计完成时间") Else End If End If
|
-- 作者:狐狸爸爸
-- 发布时间:2010/11/9 17:39:00
--
Dim v as Date = dt.DataRows(0)("内部生产预计完成时间")
if v > #1/1/1911# Then dr("合同生产预计完成时间") = v
End if
|
-- 作者:ddlzq
-- 发布时间:2010/11/9 17:56:00
--
谢谢狐爸哦...果然好用...批量抄袭代码中...我要是学这行业的就好喽 ...
|
-- 作者:czy
-- 发布时间:2010/11/9 18:26:00
--
以下是引用ddlzq在2010-11-9 17:03:00的发言:
我这个不是从一个表的数据行来生成值的,代码大致如下:
我目前有一个表,想通过两个表中的“合同编号”对应关系来引用一个时间,另外想通过.RaiseDataColChanged()来更新,但一更新,另外一个数据源表中的合同还没有下达“内部生产预计完成时间”情况下,这面的表引出的时间格式即可 0001-01-01,然后保存时就会出错“对于造型说明无效的字符值”,请问我如何能避免这种问题呢?在哪部份能加判断不会更新这个空的时间值呢?
If e.DataCol.Name = "合同编号" Dim cmd As New SQLCommand Dim dt As DataTable Dim dr As DataRow = e.DataRow cmd.C cmd.CommandText = "SELECT * From {合同管理表} Where [内部生产单号] = \'" & dr("合同编号")& "\'"
dt = cmd.ExecuteReader If dt.DataRows.Count > 0 Then dr("合同生产预计完成时间") = dt.DataRows(0)("内部生产预计完成时间") Else End If End If
其实办法很多的,如果是你这样的要求,ExecuteScalar速度会快一点。
如:
If e.DataCol.Name = "合同编号" Dim cmd As New SQLCommand Dim dr As DataRow = e.DataRow cmd.C \'数据源名称 cmd.CommandText = "SELECT Max(内部生产预计完成时间) From {合同管理表} Where [内部生产单号] = \'" & dr("合同编号") & "\'" If cmd.ExecuteScalar() <> Nothing Then dr("合同生产预计完成时间") = cmd.ExecuteScalar() End If End If
[此贴子已经被作者于2010-11-9 18:27:21编辑过]
|