以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  日期格式转换  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=107627)

--  作者:zoyong
--  发布时间:2017/10/5 21:11:00
--  日期格式转换
想在第一列导入字符型20170707      在第二列日期型自动转换为2017-07-07

原代码:
Dim dr As DataRow
Dim pr As DataRow
If dr.IsNull("第一列")  Then
    dr("第二列") = Nothing
Else
    dr("第二列") = new Date(pr("第一列").Substring(0,4),pr("第一列").Substring(4,2),pr("第一列").Substring(6,2))
End If


错误提示:
.NET Framework 版本:2.0.50727.8762
Foxtable 版本:2017.6.12.1
错误所在事件:表,表A, DataColChanged
详细错误信息:
调用的目标发生了异常。
未将对象引用设置到对象的实例。


另一种模式也错误

If e.DataCol.Name = "交易时间" Then
    If e.NewValue Is Nothing Then
        e.DataRow("日期") = Nothing
    Else
        e.DataRow("日期") = Format(e.DataRow("交易时间"), "yyyy-MM-dd")
    End If
End If


.NET Framework 版本:2.0.50727.8689
Foxtable 版本:2017.8.19.1
错误所在事件:表,cw_lsbcg, DataColChanged
详细错误信息:
调用的目标发生了异常。
从字符串“yyyy-MM-dd”到类型“Date”的转换无效。

[此贴子已经被作者于2017/10/6 10:11:23编辑过]

--  作者:zoyong
--  发布时间:2017/10/6 10:16:00
--  

If e.DataCol.name="交易日期" Then
    If e.NewValue Is Nothing Then
        e.DataRow("日期") = Nothing
    Else
        Dim s As String = e.DataRow("交易日期")
        e.DataRow("日期") = s.substring(0,4) & "-" s.substring(4,2) & "-" & s.substring(6,2)
    End If
End If


改成这样还是无效

--  作者:有点甜
--  发布时间:2017/10/6 11:31:00
--  

代码这样写

 

Dim dr As DataRow = e.DataRow
If dr.IsNull("第一列") OrElse dr("第一列").length<>8 Then
    dr("第二列") = Nothing
Else
    dr("第二列") = new Date(dr("第一列").Substring(0,4),dr("第一列").Substring(4,2),dr("第一列").Substring(6,2))
End If


--  作者:zoyong
--  发布时间:2018/3/4 9:47:00
--  
字符型列   日期:20180303 19:22:18

怎么转换成 日期型      登记日期     2018-03-03

--  作者:有点甜
--  发布时间:2018/3/4 10:34:00
--  
Dim str As String = "20180303 19:22:18"
Dim d As Date = new Date(str.Substring(0,4),str.Substring(4,2),str.Substring(6,2))
msgbox(d)