Foxtable(狐表)用户栏目专家坐堂 → 在窗口中的另类统计


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

主题:在窗口中的另类统计

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


加好友 发短信
等级:超级版主 帖子:111427 积分:567211 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/2 21:19:00 [显示全部帖子]

请上传实例

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


加好友 发短信
等级:超级版主 帖子:111427 积分:567211 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/2 22:13:00 [显示全部帖子]

把1楼这个表部分数据导出发上来

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


加好友 发短信
等级:超级版主 帖子:111427 积分:567211 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/2 22:28:00 [显示全部帖子]

要什么效果?举2个例子

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


加好友 发短信
等级:超级版主 帖子:111427 积分:567211 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/2 22:57:00 [显示全部帖子]

For Each s() As String In DataTables("报警设备定义").GetValues("主机号|回路号")
    Output.Show(s(0) & "-" & s(1))
    Dim str As String
    Dim p As List(Of String) = DataTables("报警设备定义").GetValues("一次码","主机号='" & s(0) & "' And 回路号='" & s(1) & "'")
    If p.Count = 0 Then Continue For
    str = p(0)
    Dim p0 As Integer = val(p(0))
    Dim sum As Integer = 1
    For i As Integer = 1 To p.Count - 1
        If val(p(i)) = p0+1
            sum = sum + 1
        Else
            If sum = 1 Then
                str = str & "(1)," & p(i)
            Else
                str = str & "-" & p(i-1) & "(" & sum & ")," & p(i)
            End If
            sum = 1
        End If
        p0 = val(p(i))
    Next
    If sum = 1 Then
        str = str & "(1)," & p(p.Count - 1)
    Else
        str = str & "-" & p(p.Count - 1) & "(" & sum & ")"
    End If
    Output.Show(str)
Next


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


加好友 发短信
等级:超级版主 帖子:111427 积分:567211 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/3 8:44:00 [显示全部帖子]

建表参考:http://www.foxtable.com/webhelp/topics/0679.htm

统计的方法参考9楼,看懂代码把Output.Show改为往表里填充数据即可

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


加好友 发短信
等级:超级版主 帖子:111427 积分:567211 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/4 10:07:00 [显示全部帖子]

For Each s() As String In DataTables("报警设备定义").GetValues("主机号|回路号") '获取不重复的主机号|回路号
    Output.Show(s(0) & "-" & s(1)) 查看主机号|回路号,或者根据需要保存到表格中
    Dim str As String
    Dim p As List(Of String) = DataTables("报警设备定义").GetValues("一次码","主机号='" & s(0) & "' And 回路号='" & s(1) & "'") 获取这个主机号|回路号里所有的"一次码"
    If p.Count = 0 Then Continue For 如果这个主机号|回路号没有"一次码"继续处理下一个主机号|回路号
    str = p(0) 记录第一个"一次码",效果大概等于:str=001
    Dim p0 As Integer = val(p(0)) 由于"一次码"是字符列,转换为数值计算加减,作为上一个"一次码"使用
    Dim sum As Integer = 1 由于计数连续范围内的"一次码"个数,
    For i As Integer = 1 To p.Count - 1 从第二个"一次码"开始遍历
        If val(p(i)) = p0+1 如果当前"一次码"等于上一个"一次码"+1
            sum = sum + 1 计数+1
        Else 否则当前"一次码"和上一个"一次码"是不连续的
            If sum = 1 Then 如果计数只有一个
                str = str & "(1)," & p(i) 拼接到之前记录的一次吗,效果大概等于:str=001(1),003
            Else 如果计数多于一个,说明是一个连续的范围
                str = str & "-" & p(i-1) & "(" & sum & ")," & p(i) 效果大概等于:str=001-010(10),013
            End If
            sum = 1 重置计数器
        End If
        p0 = val(p(i)) 把当前"一次码"记录到上一个"一次码"变量中
    Next
下面几行处理最后一个"一次码"
    If sum = 1 Then
        str = str & "(1)," & p(p.Count - 1)
    Else
        str = str & "-" & p(p.Count - 1) & "(" & sum & ")"
    End If
    Output.Show(str) 显示这个主机号|回路号对应的技术结果,可以改为保存到表格
Next

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


加好友 发短信
等级:超级版主 帖子:111427 积分:567211 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/5 20:19:00 [显示全部帖子]

我不懂您的业务,只是根据自己的理解进行分类,如果还要根据“设备类型”进行分类,自己补上,比如

For Each s() As String In DataTables("报警设备定义").GetValues("主机号|回路号|设备类型") '获取不重复的主机号|回路号|设备类型
    Output.Show(s(0) & "-" & s(1) & "-" & s(2)) 查看主机号|回路号,或者根据需要保存到表格中

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


加好友 发短信
等级:超级版主 帖子:111427 积分:567211 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/7/26 15:39:00 [显示全部帖子]

什么地方有什么问题?

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


加好友 发短信
等级:超级版主 帖子:111427 积分:567211 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/7/26 16:14:00 [显示全部帖子]

没看出来有什么不同,举例说明一下

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


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

请上传实例

 回到顶部
总数 13 1 2 下一页