以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  求助:自动修改代码列名中的年份  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=114363)

--  作者:hofen2008
--  发布时间:2018/2/4 15:53:00
--  求助:自动修改代码列名中的年份
因我的表中有多列,例如:“年出差统计_2014”、“年出差统计_2015”、“年出差统计_2016”、“年出差统计_2017”、“年出差统计_2018”........,如每一列都复制修改代码,感觉太繁琐了。


想自动修改case后面代码的年份,和第3行代码中的年份。
请老师帮忙看看有没有好的方法。谢谢!


1 Select Case e.DataCol.Name
2   Case "年出差统计_2014"                       
3        Dim y As Integer =2014
4        Dim ys As Date = New Date(y,1,1) 
5        Dim yd As Date = New Date(y,12,31) 
        Dim drs As List(Of DataRow)
        Dim days As timespan
        If e.DataRow("目的国入境_日期")>= ys And e.DataRow("目的国入境_日期")<= yd Then
            If e.DataRow("离境_日期")<=yd Then
                days=cdate(e.DataRow("离境_日期"))-cdate(e.DataRow("目的国入境_日期"))
            Else
                days=cdate(yd)-cdate(e.DataRow("目的国入境_日期"))
            End If
            e.DataRow(e.DataCol.name)=math.round(days.Totaldays+1,0)
        End If
        If e.DataRow("目的国入境_日期")< ys And e.DataRow("离境_日期")>= ys And e.DataRow("离境_日期")<= yd Then
            days=cdate(e.DataRow("离境_日期"))-cdate(ys)
            e.DataRow(e.DataCol.name)=math.round(days.Totaldays+1,0)
            
        End If
End Select

--  作者:有点甜
--  发布时间:2018/2/4 17:21:00
--  

 Select Case e.DataCol.Name
   Case "年出差统计_2014"                      
        Dim y As Integer =2014

 

改成这样的判断

 

 If e.DataCol.name.startswith("年出差统计_") Then
    Dim y As Integer = e.DataCol.name.replace("年出差统计_", "")


--  作者:hofen2008
--  发布时间:2018/2/4 19:24:00
--  
多谢老师的帮助,已完美解决,谢谢!

另外一个问题:
    case 后面的 列名称  如何能自动获取呢

    Select Case e.DataCol.Name

        Case "出国天数_2014","出国天数_2015","出国天数_2016",

--  作者:有点甜
--  发布时间:2018/2/4 19:50:00
--  

认认真真看2楼代码

 

If e.DataCol.name.startswith("年出差统计_") Then
    Dim y As Integer = e.DataCol.name.replace("年出差统计_", "")

 

End If


--  作者:hofen2008
--  发布时间:2018/2/4 20:13:00
--  
搞定了,多谢老师!