以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 这个表如何设计? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=60296) |
-- 作者:utcxray -- 发布时间:2014/11/21 22:35:00 -- 这个表如何设计? 如图 ![]() ![]() 问题: 1‘在“余额”中“名称”中每个人在“状态”下的按“型号”分类的余量。余额表达式该如何列?比如茶壶的数量应为2-4+3,余额为2*36-4*25+3*4 请高手帮助,谢谢!
|
-- 作者:Bin -- 发布时间:2014/11/22 9:36:00 -- http://www.foxtable.com/help/topics/2136.htm |
-- 作者:jialihaha -- 发布时间:2014/11/22 10:26:00 -- 自己闲着,试着玩了下,在表事件DataColChanged下写: Select Case e.DataCol.Name Case "状态","价格","数量","型号" Dim dr As DataRow Dim mr As DataRow = e.DataRow Dim drs As List(of DataRow) dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And [型号] = \'" & mr("型号") & "\'", "[_SortKey] Desc") If dr Is Nothing Then mr("余额") = mr("价格") * mr("数量") dr = mr End If drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & " And [型号] = \'" & dr("型号") & "\'", "[_SortKey]") For i As Integer = 1 To drs.Count - 1 If drs(i)("状态") = "借方" Then drs(i)("余额") = drs(i-1)("余额") + drs(i)("价格") * drs(i)("数量") Else drs(i)("余额") = drs(i-1)("余额") - drs(i)("价格") * drs(i)("数量") End If Next If e.DataCol.Name = "型号" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And [型号] = \'" & e.OldValue & "\'", "[_SortKey] Desc") If dr Is Nothing Then dr = e.DataTable.Find("[型号] = \'" & e.OldValue & "\'", "[_SortKey]") If dr IsNot Nothing Then dr("余额") = dr("价格") * dr("数量") End If End If If dr IsNot Nothing Then drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & " And [型号] = \'" & dr("型号") & "\'", "[_SortKey]") For i As Integer = 1 To drs.Count - 1 If drs(i)("状态") = "借方" Then drs(i)("余额") = drs(i-1)("余额") + drs(i)("价格") * drs(i)("数量") Else drs(i)("余额") = drs(i-1)("余额") - drs(i)("价格") * drs(i)("数量") End If Next End If End If End Select |
-- 作者:utcxray -- 发布时间:2014/11/22 11:29:00 -- 谢谢 |
-- 作者:jialihaha -- 发布时间:2014/11/22 11:30:00 -- 说不定有bug的哦,你自己看着改吧 |