以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]字符转日期的DataColChanged事件  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=130064)

--  作者:天一生水
--  发布时间:2019/1/11 22:45:00
--  [求助]字符转日期的DataColChanged事件
如图,如果手动在字符型的[合并日期]列录入数据,会触发DataColChanged事件,如果[合并日期]的新数据是代码生成的,就不会触发事件代码,是什么原因?
DataColChanged代码:

Select Case e.DataCol.Name
    Case "合并日期"   \'此列为字符型
        If e.DataRow.isnull("合并日期") Then
            e.DataRow("开庭日期") = Nothing      \'此列为日期型
        Else
            e.DataRow("开庭日期") = e.DataRow("合并日期")
        End If
End Select


图片点击可在新窗口打开查看此主题相关图片如下:截屏图片1.jpg
图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间:2019/1/11 22:58:00
--  
新数据是什么代码生成的?

我测试没有问题

--  作者:天一生水
--  发布时间:2019/1/12 6:26:00
--  
蓝老师好!
我做个实例,你把红框内容剪切下来,再粘贴回原处,代码没运行。

图片点击可在新窗口打开查看此主题相关图片如下:截屏图片1.jpg
图片点击可在新窗口打开查看

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试日期列.table



--  作者:有点蓝
--  发布时间:2019/1/12 10:00:00
--  
我测试没有问题。哪一段代码没有运行?

把项目里的bin目录删除,然后重启项目测试

--  作者:天一生水
--  发布时间:2019/1/12 10:15:00
--  
是DataColChanged的最后一段代码,要手动重置[合并日期],[开庭日期]才出现数据

Select Case e.DataCol.Name
    Case "合并日期"   \'此列为字符型
        If e.DataRow.isnull("合并日期") Then
            e.DataRow("开庭日期") = Nothing      \'此列为日期型
        Else
            e.DataRow("开庭日期") = e.DataRow("合并日期")
        End If
End Select


--  作者:天一生水
--  发布时间:2019/1/12 10:17:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:gif.gif
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2019/1/12 10:31:00
--  
这个是正常的啊,上面代码使用了systemready = False,屏蔽了。

而且也不合理啊,从上面的代码来看,合并日期是字符列,可能会填入多个日期值【dr1.lines("合并日期") = ls2】,这种是无法转换为"开庭日期"一个日期的。

如果"合并日期"只有一个日期值,在第一段代码同时也赋值给开庭日期不就行了