以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]生成固定统计表  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=91347)

--  作者:zcgmxf
--  发布时间:2016/10/8 22:22:00
--  [求助]生成固定统计表

老师,例子中  暴露分级 有 Ⅰ、Ⅱ、Ⅲ、Ⅳ 四个选项,有时可能全是 其中某一个选项,

Dim g As New CrossTableBuilder("统计表2", DataTables("鼎城区狂犬病暴露门诊登记表"))
g.HGroups.AddDef("县区")
g.VGroups.AddDef("暴露分级", "暴露分级_{0}")  统计生成的列根据输入的值不同 是动态的,有时可能只有一列,有时可能有四列。
g.Totals.AddDef("暴露分级", AggregateEnum.Count, "暴露分级")
g.Build()
MainTable = Tables("统计表2")

如何能生成 如汇总表那样的固定的统计表,或者将各种可能的统计结果导出到像汇总表那样固定格式的excel 表。排序不能乱。能力有限,花了两天时间搞不定,请指点,谢谢!

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb

[此贴子已经被作者于2016/10/9 8:09:33编辑过]

--  作者:zcgmxf
--  发布时间:2016/10/9 8:08:00
--  
哪位大师帮忙指点指点,谢谢了!
--  作者:zcgmxf
--  发布时间:2016/10/9 9:17:00
--  
各位大师,是不是问题很简单啊?怎么没人理我呢?图片点击可在新窗口打开查看
--  作者:有点蓝
--  发布时间:2016/10/9 10:08:00
--  
Dim g As New CrossTableBuilder("统计表2", DataTables("鼎城区狂犬病暴露门诊登记表"))
g.HGroups.AddDef("县区")
g.VGroups.AddDef("暴露分级", "暴露分级_{0}")  \'统计生成的列根据输入的值不同 是动态的,有时可能只有一列,有时可能有四列.
g.Totals.AddDef("暴露分级", AggregateEnum.Count, "暴露分级")
g.Build()
MainTable = Tables("统计表2")
Dim dict As new Dictionary(of String,Integer)
dict.Add("Ⅰ",-1)
dict.Add("Ⅱ",-1)
dict.Add("Ⅲ",-1)
dict.Add("Ⅳ",-1)
For Each c As Col In Tables("统计表2").Cols
    If c.Name.StartsWith("暴露分级_") Then
        dict(c.Caption.Split("_")(1)) = c.Index
    End If
Next

For Each key As String In dict.Keys
    If dict(key) = -1 Then
        DataTables("统计表2").DataCols.Add("暴露分级_" & key,Gettype(Integer))
    End If
Next
Dim idx As Integer = 1
For Each c As Col In Tables("统计表2").Cols
    Select Case c.Caption
        Case "暴露分级_Ⅰ"
            c.Move(1)
        Case "暴露分级_Ⅱ"
            c.Move(2)
        Case "暴露分级_Ⅲ"
            c.Move(3)
        Case "暴露分级_Ⅳ"
            c.Move(4)
    End Select
Next

--  作者:zcgmxf
--  发布时间:2016/10/9 22:31:00
--  

有点蓝老师,这个汇总表是比较难,汇总表格式在例子里。差不多了,但统计数据时还有点问题,请您看看。谢谢

填表说明: 
填表说明:            
1. 性别:1=男、2=女;          
4.暴露分级:Ⅰ级、Ⅱ级、Ⅲ级  
5.伤口自行处理、门诊伤口处理:1=是、2=否;       
6.被动免疫制剂:1=免疫球蛋白、2=抗血清、3=否;使用抗血清或免疫球蛋白人数 = 1 + 2       
7.全程免疫:1=全程接种人数、2=未全程接种人数、3=未接种人数;            
9.伤人动物名称:1=犬、2=猫、3=鼠、4=其他;       
10.伤人动物类别:1=疯动物、2=可疑疯动物、3=正常,4=不知道;

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:管理项目1.foxdb

[此贴子已经被作者于2016/10/10 10:14:12编辑过]

--  作者:有点蓝
--  发布时间:2016/10/10 9:43:00
--  
列名的问题,先把统计表生成到主表,自己观察正确的列名。在命令窗口写代码,准确后代码再搬到统计窗口
--  作者:zcgmxf
--  发布时间:2016/10/10 10:32:00
--  

老师,现在不是列名错了,而是提示 已经存在,主要有两个格式的 伤人动物_名称_   伤人动物_类别_. 随着表内输入值的变化可能出现不同的提示,但是以前面的为主。请您看看。谢谢!

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb

[此贴子已经被作者于2016/10/10 10:36:10编辑过]

--  作者:有点蓝
--  发布时间:2016/10/10 11:27:00
--  
就是列名的问题

......
    Dim dict1 As new Dictionary(of String, Integer)
    dict1.Add("1",-1)
    dict1.Add("2",-1)
    dict1.Add("3",-1)
    dict1.Add("4",-1)
    For Each c As Col In Tables("统计表").Cols
        If c.Name.StartsWith("伤人动物_名称_") Then
            dict1(c.Caption.Split("_")(2)) = c.Index \'注意列名有2个“-”
        End If
    Next

--  作者:zcgmxf
--  发布时间:2016/10/10 11:45:00
--  
多谢多谢!
--  作者:zcgmxf
--  发布时间:2016/10/10 19:38:00
--  

有点蓝老师好!这个汇总表我花了几天时间,您也费了心思,但还是不行。反复测试中发现一个问题就是下面的代码有空格和没有空格执行结果不同。

DataTables("统计表2").DataCols.Add("暴露分级_ " & key,Gettype(Integer)) 。在表中输入同一个值时,很明显。例子中我用了三列,请您看看什么原因。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb

 

 

 

老师,是不是 1 2 3 4 应该是 字符型时 代码 当做了 数字型了?

[此贴子已经被作者于2016/10/10 22:33:32编辑过]