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


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

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

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


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/7/26 16:14:00 [只看该作者]

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

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


加好友 发短信
等级:婴狐 帖子:36 积分:321 威望:0 精华:0 注册:2020/6/7 23:33:00
  发帖心情 Post By:2021/7/26 21:13:00 [只看该作者]

我在筛选树先后点击主机号、回路号之后,然后查询该回路的编码表,因为每个回路一共有200个一次码,每一种设备只占一部分一次码,所以统计每种设备占了哪些一次码,有多少个!


图片点击可在新窗口打开查看此主题相关图片如下:编码表.jpg
图片点击可在新窗口打开查看

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


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/7/26 21:16:00 [只看该作者]

请上传实例

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


加好友 发短信
等级:婴狐 帖子:36 积分:321 威望:0 精华:0 注册:2020/6/7 23:33:00
  发帖心情 Post By:2021/7/26 21:18:00 [只看该作者]


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

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


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/7/26 22:16:00 [只看该作者]

Dim r As Row
For Each s() As String In DataTables("报警设备定义").GetValues("主机号|回路号") '获取不重复的主机号|回路号
    Output.Show(s(0) & "-" & s(1) & "--------") '查看主机号|回路号,或者根据需要保存到表格中
    Dim idx As Integer = 1
    For Each s1 As String In DataTables("报警设备定义").GetValues("设备类型","主机号='" & s(0) & "' And 回路号='" & s(1) & "' and 设备类型 is not null")
        Output.Show("设备类型=" & s1)
        r = Tables("编码表").AddNew
        r("主机号") = s(0)
        r("回路号") = s(1)
        r("设备类型") = s1
        r("序号") = idx
        idx += 1
        Dim str As String
        Dim p As List(Of String) = DataTables("报警设备定义").GetValues("一次码","主机号='" & s(0) & "' And 回路号='" & s(1) & "' and 设备类型='" & s1 & "'")' 获取这个主机号|回路号里所有的"一次码"
        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
        r("一次码") = str
        Output.Show(str) '显示这个主机号|回路号对应的技术结果,可以改为保存到表格
    Next
Next

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


加好友 发短信
等级:婴狐 帖子:36 积分:321 威望:0 精华:0 注册:2020/6/7 23:33:00
  发帖心情 Post By:2021/7/27 10:35:00 [只看该作者]

数据表如下:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:合肥公共卫生管理中心消防设备定义表.xls


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


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/7/27 10:40:00 [只看该作者]

看25楼代码,如果还是看不懂
1、先花事件学习编程基础
2、上传可以测试的实例

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


加好友 发短信
等级:婴狐 帖子:36 积分:321 威望:0 精华:0 注册:2020/6/7 23:33:00
  发帖心情 Post By:2021/7/27 14:21:00 [只看该作者]

谢谢了


 回到顶部
总数 28 上一页 1 2 3