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


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

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

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


加好友 发短信
等级:超级版主 帖子:106067 积分:539428 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/3/10 10:16:00 [显示全部帖子]

使用for遍历

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


加好友 发短信
等级:超级版主 帖子:106067 积分:539428 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/3/10 13:34:00 [显示全部帖子]

   Case "第二列","第二列前20行等于4的数量自动录入"
        
        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 as integer
            For i As Integer = 0 To math.min(drs.Count - 1,19) '重算余下行的余额
If e.DataRow("第二列") = "4" Then sum += 1
next
e.DataRow("第二列前20行等于4的数量自动录入") = sum 
End Select

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


加好友 发短信
等级:超级版主 帖子:106067 积分:539428 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/3/10 15:23:00 [显示全部帖子]

Select Case e.DataCol.Name
    
    Case "第二列"
        
        Dim dr As DataRow

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


加好友 发短信
等级:超级版主 帖子:106067 积分:539428 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/3/10 15:53:00 [显示全部帖子]

第一列如果是序号,自己根据序号计算不就行了,判断第一列大于20的才才计算。21行就计算序号1~20、22行就计算2~21、...以此类推

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


加好友 发短信
等级:超级版主 帖子:106067 积分:539428 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/3/10 16:37:00 [显示全部帖子]

都计算到一起了,肯定不对咯,分开计算。

另外计算完毕再给单元格赋值,而不是一边计算一边赋值

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


加好友 发短信
等级:超级版主 帖子:106067 积分:539428 威望: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

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


加好友 发短信
等级:超级版主 帖子:106067 积分:539428 威望: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) 

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


加好友 发短信
等级:超级版主 帖子:106067 积分:539428 威望: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

 回到顶部