Foxtable(狐表)用户栏目专家坐堂 → [求助]第二列前20行的数量自动录入


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

主题:[求助]第二列前20行的数量自动录入

帅哥哟,离线,有人找我吗?
miaoqingqing
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:660 积分:5180 威望:0 精华:0 注册:2019/7/26 12:54:00
回复:(有点蓝)都计算到一起了,肯定不对咯,分开计...  发帖心情 Post By:2023/3/10 17:00:00 [只看该作者]

蓝总,折腾了很久,有点难,论坛里有类似的案例吗?我参照修改一下

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106081 积分:539504 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/3/10 17:22:00 [只看该作者]

Dim sum,sum2 As Integer
       For i As Integer = 20 To math.min(drs.Count - 1,19) '重算余下行的余额

            If e.DataRow("第二列") = "4" Then
                sum += 1
            End If
            If e.DataRow("第二列") = "8" Then
                sum2 += 1
            End If
        Next
                e.DataRow("第二列前20行等于4的数量自动录入") = sum
                e.DataRow("第二列前20行等于8的数量自动录入") = sum2

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


加好友 发短信
等级:三尾狐 帖子:660 积分:5180 威望:0 精华:0 注册:2019/7/26 12:54:00
回复:(有点蓝)Dim sum,sum2 As Integer  &nbs...  发帖心情 Post By:2023/3/10 19:39:00 [只看该作者]

蓝总,下面代码生成列填充0,还是有问题
Select Case e.DataCol.Name
    
    Case "第二列"
        
        Dim dr As DataRow
        
        Dim drs As List(of DataRow)
        dr = e.DataTable.Find("[_SortKey] < " & e.DataRow("_SortKey"), "[_SortKey] Desc") '找出上一行
        If dr Is Nothing Then '如果没有找到上一行,说明本行就是第一行
            e.DataRow("第二列前20行等于4的数量自动录入") = Nothing
            dr = e.DataRow
        End If
        drs = e.DataTable.Select("[_SortKey] <= " & dr("_SortKey"), "[_SortKey] desc")
        
        Dim sum,sum2 As Integer
        For i As Integer = 20 To math.min(drs.Count - 1,19) '重算余下行的余额
            
            If e.DataRow("第二列") = "4" Then
                sum += 1
            End If
            If e.DataRow("第二列") = "8" Then
                sum2 += 1
            End If
        Next
        e.DataRow("第二列前20行等于4的数量自动录入") = sum
        e.DataRow("第二列前20行等于8的数量自动录入") = sum2
        
        
End Select

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


加好友 发短信
等级:三尾狐 帖子:660 积分:5180 威望:0 精华:0 注册:2019/7/26 12:54:00
回复:(有点蓝)Dim sum,sum2 As Integer  &nbs...  发帖心情 Post By:2023/3/10 19:42:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:列填充0有问题.png
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106081 积分:539504 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/3/11 8:31:00 [只看该作者]

For i As Integer = 0 To math.min(drs.Count - 1,19) 

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


加好友 发短信
等级:三尾狐 帖子:660 积分:5180 威望:0 精华:0 注册:2019/7/26 12:54:00
回复:(有点蓝)For i As Integer = 0 To math.min(d...  发帖心情 Post By:2023/3/11 10:27:00 [只看该作者]

蓝总,可能是我表达描述不到位,想实现的效果是黄色列生成绿色列的值(统计第二列 4or8 前20行中出现的次数数量)

图片点击可在新窗口打开查看此主题相关图片如下:要实现生成绿色填充的值不是黄色填充的值.png
图片点击可在新窗口打开查看

下面代码执行生成的是黄色值是0和第一列的编号(不是想要的结果),是想统计 
4 千20行中出现的次数数量  9 10 10 11 10。。。。
8 千20行中出现的次数数量 5 4 4 4 4 3 2 2 2 2 。。。。

Select Case e.DataCol.Name
    
    Case "第二列"
        
        Dim dr As DataRow
        
        Dim drs As List(of DataRow)
        dr = e.DataTable.Find("[_SortKey] < " & e.DataRow("_SortKey"), "[_SortKey] Desc") '找出上一行
        If dr Is Nothing Then '如果没有找到上一行,说明本行就是第一行
            e.DataRow("第二列前20行等于4的数量自动录入") = Nothing
            dr = e.DataRow
        End If
        drs = e.DataTable.Select("[_SortKey] <= " & dr("_SortKey"), "[_SortKey] desc")
        
        Dim sum,sum2 As Integer

For i As Integer = 0 To math.min(drs.Count - 1,19) 
            
            If e.DataRow("第二列") = "4" Then
                sum += 1
            End If
            If e.DataRow("第二列") = "8" Then
                sum2 += 1
            End If
        Next
        e.DataRow("第二列前20行等于4的数量自动录入") = sum
        e.DataRow("第二列前20行等于8的数量自动录入") = sum2
        
        
End Select

[此贴子已经被作者于2023/3/11 10:29:56编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106081 积分:539504 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/3/11 10:58:00 [只看该作者]

Select Case e.DataCol.Name
    Case "第二列"
        Dim drs As List(Of DataRow)
        drs = e.DataTable.Select("[_SortKey] < " & e.DataRow("_SortKey"), "[_SortKey] desc")
        If drs.Count < 20 Then
            Return
        End If 
        Dim sum, sum2 As Integer
        
        For i As Integer = 0 To 19
            
            If drs(i)("第二列") = "4" Then
                sum += 1
            End If
            If drs(i)("第二列") = "8" Then
                sum2 += 1
            End If
        Next
        e.DataRow("第二列前20行等于4的数量自动录入") = sum
        e.DataRow("第二列前20行等于8的数量自动录入") = sum2
End Select

 回到顶部
总数 17 上一页 1 2