以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]正负数 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=71426) |
||||
-- 作者:江南小城 -- 发布时间:2015/7/10 22:58:00 -- [求助]正负数 狐表老师,我要把大于0的前面加上+号小于0的加上-号 Select Case e.DataCol.Name Dim dr As DataRow drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & " And [股票名称] = \'" & dr("股票名称") & "\'", "[_SortKey]") drs(i)("仓储_金额") = drs(i-1)("仓储_金额") + drs(i)("卖出_金额") - drs(i)("买入_金额") dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And [股票名称] = \'" & e.OldValue & "\'", "[_SortKey] Desc") |
||||
-- 作者:狐狸爸爸 -- 发布时间:2015/7/11 8:33:00 -- mr("仓储_金额") = mr("卖出_金额") - mr("买入_金额")
应该应该改为:
mr("仓储_金额") = mr("买入_金额") - mr("卖出_金额") |
||||
-- 作者:江南小城 -- 发布时间:2015/7/11 9:12:00 -- 以下是引用狐狸爸爸在2015/7/11 8:33:00的发言:
mr("仓储_金额") = mr("卖出_金额") - mr("买入_金额")
应该应该改为:
mr("仓储_金额") = mr("买入_金额") - mr("卖出_金额") ![]() ![]() |
||||
-- 作者:狐狸爸爸 -- 发布时间:2015/7/11 9:32:00 -- 设置完成代码之后,要重置一下列股票名称列,以便根据新的代码重算一次。 |
||||
-- 作者:江南小城 -- 发布时间:2015/7/11 10:18:00 -- 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 Else mr("仓储_金额") = dr("仓储_金额") End If drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & " And [股票名称] = \'" & dr("股票名称") & "\'", "[_SortKey]") For i As Integer = 1 To drs.Count - 1 drs(i)("仓储_金额") = drs(i-1)("仓储_金额") + drs(i)("卖出_金额") - drs(i)("买入_金额") 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 drs(i)("仓储_金额") = drs(i-1)("仓储_金额") + drs(i)("卖出_金额") - drs(i)("买入_金额") Next End If End If End Select ![]() ![]() |
||||
-- 作者:狐狸爸爸 -- 发布时间:2015/7/11 10:54:00 -- 编程是严谨的,我告诉你:
可是你五楼的代码中,有一处是: mr("仓储_金额") = mr("买入_金额") - mr("卖出_金额") 有三处是: drs(i)("仓储_金额") = drs(i-1)("仓储_金额") + drs(i)("卖出_金额") - drs(i)("买入_金额") drs(i)("仓储_金额") = drs(i-1)("仓储_金额") + drs(i)("卖出_金额") - drs(i)("买入_金额")
至少你得统一算法吧? 到底是“买入 - 卖出”,还是“卖出 -买入”,你最清楚,根据你的图片,应该全是“卖出 - 买入”,统一改过来。 [此贴子已经被作者于2015/7/11 10:53:50编辑过]
|
||||
-- 作者:狐狸爸爸 -- 发布时间:2015/7/11 10:55:00 -- Select Case e.DataCol.Name |
||||
-- 作者:狐狸爸爸 -- 发布时间:2015/7/11 11:01:00 -- 你一楼的要求和五楼的要求是矛盾的,你知道吗?
一楼要得到整数,必须:买入-卖出 五楼要得到负数,必须:卖出-买入
自己先理清楚思路,然后修改代码。 |
||||
-- 作者:江南小城 -- 发布时间:2015/7/11 11:31:00 -- 老师,仓储_金额=买入_数量*买入_平均价,此时仓储_金额列是等于正数。卖出时低于买入_平均价此时仓储_金额列的数据应该是负数
|
||||
-- 作者:狐狸爸爸 -- 发布时间:2015/7/11 11:43:00 -- 我不炒股,所以不懂你的算法,请描述一下
为啥1楼应该是1000,5楼应该是-100 |