以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [原创]如何以金额拆分一行变多行  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=130462)

--  作者:bnblatale
--  发布时间:2019/1/22 16:28:00
--  [原创]如何以金额拆分一行变多行
以金额拆分 一行变多行 求助大神!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:拆行.table


--  作者:有点甜
--  发布时间:2019/1/22 16:41:00
--  

参考

 

Dim dt As DataTable = DataTables("表B")
For Each dr As DataRow In dt.Select("第六列 is null")
    Dim sum = val(dr("第五列"))
    If sum > 80000 Then
        Dim dr1 As DataRow = dt.AddNew
        dr1("第一列") = dr("第一列")
        dr1("第五列") = sum / 3
        dr1("第六列") = dr("_Identify")
        Dim dr2 As DataRow = dt.AddNew
        dr2("第一列") = dr("第一列")
        dr2("第五列") = sum / 3
        dr2("第六列") = dr("_Identify")
        Dim dr3 As DataRow = dt.AddNew
        dr3("第一列") = dr("第一列")
        dr3("第五列") = sum - sum / 3 * 2
        dr3("第六列") = dr("_Identify")
    ElseIf sum > 40000 Then
        Dim dr1 As DataRow = dt.AddNew
        dr1("第一列") = dr("第一列")
        dr1("第五列") = sum / 2
        dr1("第六列") = dr("_Identify")
        Dim dr3 As DataRow = dt.AddNew
        dr3("第一列") = dr("第一列")
        dr3("第五列") = sum - sum / 2
        dr3("第六列") = dr("_Identify")
    End If
Next


--  作者:有点甜
--  发布时间:2019/1/22 16:42:00
--  
请具体说明一下计算逻辑,看不懂你的数据。
--  作者:bnblatale
--  发布时间:2019/1/22 16:47:00
--  
数量 、金额随意分 总数不变
--  作者:y2287958
--  发布时间:2019/1/22 16:50:00
--  
随意分,那平分最简单
--  作者:有点甜
--  发布时间:2019/1/22 16:57:00
--  

参考

 

Dim dt As DataTable = DataTables("表B")
For Each dr As DataRow In dt.Select("第六列 is null and 第一列 is not null")
    Dim sum = val(dr("第五列"))
    Dim lj As Double = 0
    If sum > 80000 Then
        Dim dr1 As DataRow = dt.AddNew
        dr1("第一列") = dr("第一列")
        Dim v = rand.Next(0, sum*100)
        dr1("第五列") = v / 100
        lj += v / 100
        dr1("第六列") = dr("_Identify")
        Dim dr2 As DataRow = dt.AddNew
        dr2("第一列") = dr("第一列")
        v = rand.Next(0, (sum-lj)*100)
        dr2("第五列") = v / 100
        lj += v / 100
        dr2("第六列") = dr("_Identify")
        Dim dr3 As DataRow = dt.AddNew
        dr3("第一列") = dr("第一列")
        dr3("第五列") = sum - lj
        dr3("第六列") = dr("_Identify")
    ElseIf sum > 40000 Then
        Dim dr1 As DataRow = dt.AddNew
        dr1("第一列") = dr("第一列")
        Dim v = rand.Next(0, sum*100)
        dr1("第五列") = v / 100
        lj += v / 100
        dr1("第六列") = dr("_Identify")
        Dim dr3 As DataRow = dt.AddNew
        dr3("第一列") = dr("第一列")
        dr3("第五列") = sum - lj
        dr3("第六列") = dr("_Identify")
    Else
        Dim dr1 As DataRow = dt.AddNew
        dr1("第一列") = dr("第一列")
        dr1("第五列") = dr("第五列")
        dr1("第六列") = dr("_Identify")       
    End If
Next


--  作者:bnblatale
--  发布时间:2019/1/22 20:45:00
--  
新手。不懂怎么复代码到表的地方。版主能不能做好,上传文件。万分感谢!
--  作者:有点蓝
--  发布时间:2019/1/22 21:05:00
--  
新增窗口,添加一个按钮,把代码放到按钮click事件中
--  作者:bnblatale
--  发布时间:2019/1/22 21:14:00
--  
试了。没反应  求助!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:拆行 (1).table


--  作者:bnblatale
--  发布时间:2019/1/22 21:17:00
--  
工作原因。一个月要处理上千条。真心求助!万分感谢~