以文本方式查看主题 - 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 |