Foxtable(狐表)用户栏目专家坐堂 → [求助]正负数


  共有3553人关注过本帖树形打印复制链接

主题:[求助]正负数

帅哥哟,离线,有人找我吗?
江南小城
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1005 积分:5955 威望:0 精华:0 注册:2015/6/18 5:15:00
[求助]正负数  发帖心情 Post By:2015/7/10 22:58:00 [只看该作者]

狐表老师,我要把大于0的前面加上+号小于0的加上-号

Select Case e.DataCol.Name
    Case "股piao名称","卖出_金额","买入_金额"

        Dim dr As DataRow
        Dim mr As DataRow = e.DataRow
        Dim drs As List(of DataRow)
        dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And [股piao名称] = '" & mr("股piao名称") & "'", "[_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 [股piao名称] = '" & dr("股piao名称") & "'", "[_SortKey]")
        For i As Integer = 1 To drs.Count - 1

            drs(i)("仓储_金额") = drs(i-1)("仓储_金额") + drs(i)("卖出_金额") - drs(i)("买入_金额")
        Next
        If e.DataCol.Name = "股piao名称" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then

            dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And [股piao名称] = '" & e.OldValue & "'", "[_SortKey] Desc")
            If dr Is Nothing Then
                dr = e.DataTable.Find("[股piao名称] = '" & 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 [股piao名称] = '" & dr("股piao名称") & "'", "[_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


图片点击可在新窗口打开查看此主题相关图片如下:图像 1.png
图片点击可在新窗口打开查看
                                                                                                               谢谢


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2015/7/11 8:33:00 [只看该作者]

 mr("仓储_金额") = mr("卖出_金额") - mr("买入_金额")

 

应该应该改为:

 

 mr("仓储_金额") =  mr("买入_金额") - mr("卖出_金额")


 回到顶部
帅哥哟,离线,有人找我吗?
江南小城
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1005 积分:5955 威望:0 精华:0 注册:2015/6/18 5:15:00
  发帖心情 Post By:2015/7/11 9:12:00 [只看该作者]

以下是引用狐狸爸爸在2015/7/11 8:33:00的发言:

 mr("仓储_金额") = mr("卖出_金额") - mr("买入_金额")

 

应该应该改为:

 

 mr("仓储_金额") =  mr("买入_金额") - mr("卖出_金额")


图片点击可在新窗口打开查看此主题相关图片如下:图像 2.png
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2015/7/11 9:32:00 [只看该作者]

 设置完成代码之后,要重置一下列股piao名称列,以便根据新的代码重算一次。

 

 回到顶部
帅哥哟,离线,有人找我吗?
江南小城
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1005 积分:5955 威望:0 精华:0 注册:2015/6/18 5:15:00
  发帖心情 Post By:2015/7/11 10:18:00 [只看该作者]

Select Case e.DataCol.Name
    Case "股piao名称","卖出_金额","买入_金额"
       
        Dim dr As DataRow
        Dim mr As DataRow = e.DataRow
        Dim drs As List(of DataRow)
        dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And [股piao名称] = '" & mr("股piao名称") & "'", "[_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 [股piao名称] = '" & dr("股piao名称") & "'", "[_SortKey]")
        For i As Integer = 1 To drs.Count - 1
           
            drs(i)("仓储_金额") = drs(i-1)("仓储_金额") + drs(i)("卖出_金额") - drs(i)("买入_金额")
        Next
        If e.DataCol.Name = "股piao名称" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then
           
            dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And [股piao名称] = '" & e.OldValue & "'", "[_SortKey] Desc")
            If dr Is Nothing Then
                dr = e.DataTable.Find("[股piao名称] = '" & 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 [股piao名称] = '" & dr("股piao名称") & "'", "[_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

图片点击可在新窗口打开查看此主题相关图片如下:图像 3.png
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2015/7/11 10:54:00 [只看该作者]

 编程是严谨的,我告诉你:

 

 mr("仓储_金额") = mr("卖出_金额") - mr("买入_金额")

应该应该改为:

 mr("仓储_金额") =  mr("买入_金额") - mr("卖出_金额")

 

可是你五楼的代码中,有一处是:

 mr("仓储_金额") =  mr("买入_金额") - mr("卖出_金额")

有三处是:

drs(i)("仓储_金额") = drs(i-1)("仓储_金额") + drs(i)("卖出_金额") - drs(i)("买入_金额")
dr("仓储_金额") = dr("卖出_金额") - dr("买入_金额")

drs(i)("仓储_金额") = drs(i-1)("仓储_金额") + drs(i)("卖出_金额") - drs(i)("买入_金额")

 

 

至少你得统一算法吧? 到底是“买入 - 卖出”,还是“卖出 -买入”,你最清楚,根据你的图片,应该全是“卖出 - 买入”,统一改过来。

[此贴子已经被作者于2015/7/11 10:53:50编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2015/7/11 10:55:00 [只看该作者]

Select Case e.DataCol.Name
    Case "股piao名称","卖出_金额","买入_金额"
       
        Dim dr As DataRow
        Dim mr As DataRow = e.DataRow
        Dim drs As List(of DataRow)
        dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And [股piao名称] = '" & mr("股piao名称") & "'", "[_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 [股piao名称] = '" & dr("股piao名称") & "'", "[_SortKey]")
        For i As Integer = 1 To drs.Count - 1
           
            drs(i)("仓储_金额") = drs(i-1)("仓储_金额") + drs(i)("卖出_金额") - drs(i)("买入_金额")
        Next
        If e.DataCol.Name = "股piao名称" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then
           
            dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And [股piao名称] = '" & e.OldValue & "'", "[_SortKey] Desc")
            If dr Is Nothing Then
                dr = e.DataTable.Find("[股piao名称] = '" & 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 [股piao名称] = '" & dr("股piao名称") & "'", "[_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


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2015/7/11 11:01:00 [只看该作者]

你一楼的要求和五楼的要求是矛盾的,你知道吗?

 

一楼要得到整数,必须:买入-卖出 

五楼要得到负数,必须:卖出-买入

 

自己先理清楚思路,然后修改代码。


 回到顶部
帅哥哟,离线,有人找我吗?
江南小城
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1005 积分:5955 威望:0 精华:0 注册:2015/6/18 5:15:00
  发帖心情 Post By:2015/7/11 11:31:00 [只看该作者]

老师,仓储_金额=买入_数量*买入_平均价,此时仓储_金额列是等于正数。卖出时低于买入_平均价此时仓储_金额列的数据应该是负数
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:股piao管理.rar


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2015/7/11 11:43:00 [只看该作者]

 我不炒股,所以不懂你的算法,请描述一下

 

为啥1楼应该是1000,5楼应该是-100


 回到顶部
总数 24 1 2 3 下一页