以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  表中“费用总额”会自动跳转到下一个有 相同账号 的“本金”列  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=89778)

--  作者:约翰舒
--  发布时间:2016/8/29 20:36:00
--  表中“费用总额”会自动跳转到下一个有 相同账号 的“本金”列
有“账号”列,“本金”列,“利息”列,“服务费”列,“费用总额”列

                 其中“费用总额”=“本金”+“利息”-“服务费”
                  且
                 表中“费用总额”会自动跳转到下一个有 相同账号 的“本金”列

该怎么写代码?


--  作者:Hyphen
--  发布时间:2016/8/30 9:01:00
--  
查找定位:http://www.foxtable.com/webhelp/scr/0552.htm



--  作者:约翰舒
--  发布时间:2016/8/30 9:03:00
--  
看不懂
--  作者:约翰舒
--  发布时间:2016/8/30 10:15:00
--  
这个能帮着看看嘛,写下代码,,,
--  作者:约翰舒
--  发布时间:2016/8/30 10:32:00
--  
下面是流水账的设计方法

Select Case e.DataCol.Name
    Case
"产品","入库",
"出库"
       
Dim drs As List(of DataRow)
        Dim Filter As String
        Filter = "[_SortKey] >= " & e.DataRow("_SortKey") & " And [产品] = \'" & e.DataRow("产品") & "\'"
        drs = e.DataTable.Select(Filter)
        For Each dr As DataRow In drs
            Filter = "[_SortKey] <= " & dr("_SortKey") & " And [产品] = \'" & dr("产品") & "\'"
            Dim Val1 As Double = e.DataTable.Compute("Sum(入库)",Filter)
            Dim Val2 As Double = e.DataTable.Compute("Sum(出库)",Filter)
            dr("库存") = Val1 - Val2
        Next
        If e.DataCol.Name = "产品" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then
            Filter = "[_SortKey] > " & e.DataRow("_SortKey") & " And [产品] = \'" & e.OldValue & "\'"
            drs = e.DataTable.Select(Filter)
            For Each dr As DataRow In drs
                Filter = "[_SortKey] <= " & dr("_SortKey") & " And [产品] = \'" & dr("产品") & "\'"
                Dim Val1 As Double = e.DataTable.Compute("Sum(入库)",Filter)
                Dim Val2 As Double = e.DataTable.Compute("Sum(出库)",Filter)
                dr("库存") = Val1 - Val2
            Next
        End If
End
Select



但是这个相同产品的库存不能自动跳转至相同产品下一行入库栏,这个该怎么实现吶

--  作者:Hyphen
--  发布时间:2016/8/30 10:56:00
--  
上传例子说明
--  作者:约翰舒
--  发布时间:2016/8/30 11:01:00
--  
还是上面那个例子,比如第一行   产品1,入库2,出库0,库存为2
                              第二行    产品2,入库2,出库1,库存为1
                              第三行    产品1,入库2,出库1,库存为1

第一行和第三行都是产品1,第三行的入库为第一行的库存,自动跳转的

--  作者:Hyphen
--  发布时间:2016/8/30 11:22:00
--  
这是流水账,如果只是想输入完毕后进行跳转,参考

Select Case e.DataCol.Name
    Case "产品","入库","出库"
        Dim idx1 As Integer = Tables(e.DataTable.Name).FindRow(e.DataRow)
        If idx1 >= 0 Then
            idx1 = Tables(e.DataTable.Name).Find(e.DataRow("产品"),idx1+1,"产品",True,True,False)
            If idx1 >=0 Then
                Tables(e.DataTable.Name).Position = idx1
            End If
        End If
End Select