以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  一个小练习:数字转换为日期  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=58529)

--  作者:梨园村夫
--  发布时间:2014/10/18 12:40:00
--  一个小练习:数字转换为日期
 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:数字到日期.foxdb


代码如下


数字到日期_DataColChanged

 

If e.DataCol.Name = "数字" Then

    If e.DataRow("数字") Like "########"

        e.DataRow("日期") = DateTime.ParseExact(e.DataRow("数字"),"yyyyMMdd",Nothing)

    Else If e.DataRow("数字") Like "######"

        e.DataRow("日期") = DateTime.ParseExact(e.DataRow("数字"),"yyMMdd",Nothing)

    Else If e.DataRow("数字") Like "##[-]##[-]##"

        e.DataRow("日期") = DateTime.ParseExact(e.DataRow("数字"),"yy-MM-dd",Nothing)

    Else If e.DataRow("数字") Like "##[-]##"

        e.DataRow("日期") = DateTime.ParseExact(e.DataRow("数字"),"MM-dd",Nothing)

    Else If e.DataRow("数字") Like "####"

        e.DataRow("日期") = DateTime.ParseExact(e.DataRow("数字"),"MMdd",Nothing)

    Else

        Return

    End If

End If

[此贴子已经被作者于2014-10-18 12:41:42编辑过]

--  作者:Bin
--  发布时间:2014/10/18 12:58:00
--  
谢谢分享
--  作者:czy
--  发布时间:2014/10/18 13:12:00
--  

应该加上捕获异常错误代码,否则会报错的。

 

If e.DataCol.Name = "数字" Then
    try
        If e.DataRow("数字") Like "########"
            e.DataRow("日期") = DateTime.ParseExact(e.DataRow("数字"),"yyyyMMdd",Nothing)
        Else If e.DataRow("数字") Like "######"
            e.DataRow("日期") = DateTime.ParseExact(e.DataRow("数字"),"yyMMdd",Nothing)
        Else If e.DataRow("数字") Like "##[-]##[-]##"
            e.DataRow("日期") = DateTime.ParseExact(e.DataRow("数字"),"yy-MM-dd",Nothing)
        Else If e.DataRow("数字") Like "##[-]##"
            e.DataRow("日期") = DateTime.ParseExact(e.DataRow("数字"),"MM-dd",Nothing)
        Else If e.DataRow("数字") Like "####"
            e.DataRow("日期") = DateTime.ParseExact(e.DataRow("数字"),"MMdd",Nothing)
        Else
            Return
        End If
    Catch ex As Exception
    End try
End If

 

 


--  作者:lihe60
--  发布时间:2014/10/18 13:16:00
--  

不对呀,列录入200041011,日期是不对的。

应该对输入内容作些限制。

[此贴子已经被作者于2014-10-18 13:16:19编辑过]

--  作者:lihe60
--  发布时间:2014/10/18 13:18:00
--  

代码应该是这样的。

 

If e.DataCol.Name = "数字" Then
    try
        If e.DataRow("数字") Like "########"
            e.DataRow("日期") = DateTime.ParseExact(e.DataRow("数字"),"yyyyMMdd",Nothing)
        Else If e.DataRow("数字") Like "######"
            e.DataRow("日期") = DateTime.ParseExact(e.DataRow("数字"),"yyMMdd",Nothing)
        Else If e.DataRow("数字") Like "##[-]##[-]##"
            e.DataRow("日期") = DateTime.ParseExact(e.DataRow("数字"),"yy-MM-dd",Nothing)
        Else If e.DataRow("数字") Like "##[-]##"
            e.DataRow("日期") = DateTime.ParseExact(e.DataRow("数字"),"MM-dd",Nothing)
        Else If e.DataRow("数字") Like "####"
            e.DataRow("日期") = DateTime.ParseExact(e.DataRow("数字"),"MMdd",Nothing)
        Else
            e.DataRow("日期")=Nothing
        End If
    Catch ex As Exception
    End try
End If


--  作者:梨园村夫
--  发布时间:2014/10/18 13:43:00
--  
学习了!