以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  DON老师,再帮我精简一段代码  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=34313)

--  作者:zerov
--  发布时间:2013/6/5 9:42:00
--  DON老师,再帮我精简一段代码
意思是,月份数值有变动时,则自动求和(不想用表达式,不能导出,特别是我把表放到另一个系统时不方便迁移)

Select Case e.DataCol.Name
    Case "TX2013年01月","TX2013年02月","TX2013年03月","TX2013年04月","TX2013年05月","TX2013年06月","TX2013年07月","TX2013年08月","TX2013年09月","TX2013年10月","TX2013年11月","TX2013年12月","TX2014年01月","TX2014年02月","TX2014年03月","TX2014年04月","TX2014年05月","TX2014年06月","TX2014年07月","TX2014年08月","TX2014年09月","TX2014年10月","TX2014年11月","TX2014年12月"
        Dim er As DataRow = e.DataRow
        If e.NewValue<>e.OldValue Then
            er("TX2013年合计")=er("TX2013年01月")+er("TX2013年02月")+er("TX2013年03月")+er("TX2013年04月")+er("TX2013年05月")+er("TX2013年06月")+er("TX2013年07月")+er("TX2013年08月")+er("TX2013年09月")+er("TX2013年10月")+er("TX2013年11月")+er("TX2013年12月")
            er("TX2014年合计")=er("TX2014年01月")+er("TX2014年02月")+er("TX2014年03月")+er("TX2014年04月")+er("TX2014年05月")+er("TX2014年06月")+er("TX2014年07月")+er("TX2014年08月")+er("TX2014年09月")+er("TX2014年10月")+er("TX2014年11月")+er("TX2014年12月")
        End If
End Select

--  作者:lsy
--  发布时间:2013/6/5 9:59:00
--  
列名好奇怪呀:有具体的日期,那就要经常变动列名,这项目只能自己用了,发布后很快作废。
--  作者:狐狸爸爸
--  发布时间:2013/6/5 9:59:00
--  
简单的相加,你用表达式,不简单很多吗?
--  作者:jspta
--  发布时间:2013/6/5 9:59:00
--  

你这个列名有点问题哦,以后再增长怎么办?

 

Dim yy As String = e.DataCol.name.SubString(2,4)
If e.DataCol.name Like "TX" & yy & "年%月" Then
    Dim dcm As Decimal = 0
    For Each dc As DataCol In e.DataTable.DataCols
        If dc.Name Like "TX" & yy & "年%月" Then
            dcm = dcm + e.DataRow(dc.Name)
        End If
    Next
    e.DataRow("TX" & yy & "年合计")= dcm
End If


--  作者:don
--  发布时间:2013/6/5 10:30:00
--  
楼主大概用Excel久了,建议加强数据库的认识
--  作者:泡泡
--  发布时间:2013/6/5 10:54:00
--  
楼上两位好热心,到处有足迹
--  作者:zerov
--  发布时间:2013/6/5 13:37:00
--  回复:(lsy)列名好奇怪呀:有具体的日期,那就要经常...

谢谢LSY,像这种不能自动加列的摊销表,涉及到列变动,如何做才好?

 

或者设置为:一个月份ComBox按钮,一个表,有期初金额,本月摊销金额,累计摊销金额,本月摊销=合同金额/月份数,当选择某个月份时,自动列出这个月份的摊销金额及期初、累计金额,这样行不


--  作者:zerov
--  发布时间:2013/6/5 14:17:00
--  
谢谢狐爸、DON、jspta老师
--  作者:don
--  发布时间:2013/6/5 14:22:00
--  
这种情况应该报表解决就行了,不应该出现在数据库中.
--  作者:lihe60
--  发布时间:2013/6/5 15:09:00
--  
以下是引用zerov在2013-6-5 9:42:00的发言:
意思是,月份数值有变动时,则自动求和(不想用表达式,不能导出,特别是我把表放到另一个系统时不方便迁移)

Select Case e.DataCol.Name
    Case "TX2013年01月","TX2013年02月","TX2013年03月","TX2013年04月","TX2013年05月","TX2013年06月","TX2013年07月","TX2013年08月","TX2013年09月","TX2013年10月","TX2013年11月","TX2013年12月","TX2014年01月","TX2014年02月","TX2014年03月","TX2014年04月","TX2014年05月","TX2014年06月","TX2014年07月","TX2014年08月","TX2014年09月","TX2014年10月","TX2014年11月","TX2014年12月"
        Dim er As DataRow = e.DataRow
        If e.NewValue<>e.OldValue Then
            er("TX2013年合计")=er("TX2013年01月")+er("TX2013年02月")+er("TX2013年03月")+er("TX2013年04月")+er("TX2013年05月")+er("TX2013年06月")+er("TX2013年07月")+er("TX2013年08月")+er("TX2013年09月")+er("TX2013年10月")+er("TX2013年11月")+er("TX2013年12月")
            er("TX2014年合计")=er("TX2014年01月")+er("TX2014年02月")+er("TX2014年03月")+er("TX2014年04月")+er("TX2014年05月")+er("TX2014年06月")+er("TX2014年07月")+er("TX2014年08月")+er("TX2014年09月")+er("TX2014年10月")+er("TX2014年11月")+er("TX2014年12月")
        End If
End Select

不明白为什么要这么长?