以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [讨论]数据填充器怎么用  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=42510)

--  作者:hrw68529
--  发布时间:2013/11/14 8:17:00
--  [讨论]数据填充器怎么用
我想从表笔试成绩中提取不重复的分组名称,然后按分组进行分数统计,怎么提取不了呢?如:代码:Dim f As New Filler
f.SourceTable = DataTables("笔试成绩") \'指定数据来源
f.SourceCols = "天数,分组,面试室" \'指定数据来源列
f.DataTable = DataTables("加权计算") \'指定数据接收表
f.DataCols = "天数,分组,面试室" \'指定数据接收列
f.Fill() \'填充数据

--  作者:狐狸爸爸
--  发布时间:2013/11/14 8:19:00
--  

是出错,还是某些列没有数据,还是全部没有数据?

代码看出不出问题,看看是不是列名错了。

最好做个简单例子发上来测试


--  作者:hrw68529
--  发布时间:2013/11/14 8:58:00
--  
在“加权计算”中,请你帮忙把按分组进行统计每天的每组的最高分、最低分、平均值等代码写进去,谢谢。软件如下:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:公员面试登分系统_201311140854.zip


--  作者:Bin
--  发布时间:2013/11/14 9:05:00
--  
你在在按钮写了这段代码,居然又在DataColChanged事件写同样的代码.
你填充了自然会触发DataColChanged,触发了又执行填充,这不成死循环了吗? 当然会自动关闭了.





--  作者:hrw68529
--  发布时间:2013/11/14 9:11:00
--  
真是的,忘记删除了,谢谢
--  作者:Bin
--  发布时间:2013/11/14 9:13:00
--  
统计也没什么难度的,要多看帮助,这些帮助里面都有的

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:公员面试登分系统.table



--  作者:hrw68529
--  发布时间:2013/11/14 13:38:00
--  
下面这段代码如何修改:总分是指:去掉本组最高分和最低分后加起来的分数,本组平均值是指:去掉本组最高分和最低分后的总分除以去掉一个最高分和一个最低分人员后,剩余人员数,怎么修改,请赐教,谢谢。
If e.DataCol.name="天数" OrElse e.DataCol.name="分组" Then
    If e.DataRow.IsNull("天数")=False AndAlso e.DataRow.IsNull("分组")=False Then
        e.DataRow("最高分") = DataTables("笔试成绩").Compute("max(总成绩)","天数=\'" & e.DataRow("天数") & "\' and 分组=\'" & e.DataRow("分组") & "\'")
        e.DataRow("最低分") = DataTables("笔试成绩").Compute("min(总成绩)","天数=\'" & e.DataRow("天数") & "\' and 分组=\'" & e.DataRow("分组") & "\'")
        e.DataRow("总分") = DataTables("笔试成绩").Compute("sum(总成绩)","天数=\'" & e.DataRow("天数") & "\' and 分组=\'" & e.DataRow("分组") & "\'")
        e.DataRow("本组平均值")= DataTables("笔试成绩").Compute("avg(总成绩)","天数=\'" & e.DataRow("天数") & "\' and 分组=\'" & e.DataRow("分组") & "\'")
    End If
End If

--  作者:Bin
--  发布时间:2013/11/14 14:08:00
--  
 e.DataRow("总分") = DataTables("笔试成绩").Compute("sum(总成绩)","天数=\'" & e.DataRow("天数") & "\' and 分组=\'" & e.DataRow("分组") & "\'")-e.DataRow("最高分")-e.DataRow("最低分")
dim maxid as integer = DataTables("笔试成绩").FInd("天数=\'" & e.DataRow("天数") & "\' and 分组=\'" & e.DataRow("分组") & "\'","总成绩 Desc")
dim minid as integer = DataTables("笔试成绩").FInd("天数=\'" & e.DataRow("天数") & "\' and 分组=\'" & e.DataRow("分组") & "\'","总成绩")
 e.DataRow("本组平均值")= DataTables("笔试成绩").Compute("avg(总成绩)","天数=\'" & e.DataRow("天数") & "\' and 分组=\'" & e.DataRow("分组") & "\' and _identify not in ("& maxid & "," & minid & ")")



--  作者:hrw68529
--  发布时间:2013/11/14 14:23:00
--  
出现下图是怎么回事?
图片点击可在新窗口打开查看此主题相关图片如下:计算转换.png
图片点击可在新窗口打开查看

--  作者:狐狸爸爸
--  发布时间:2013/11/14 14:36:00
--  

修改下面两行代码,求最高分,最低分,应该用compute,而不是Find哦:


dim maxid as integer = DataTables("笔试成绩").FInd("天数=\'" & e.DataRow("天数") & "\' and 分组=\'" & e.DataRow("分组") & "\'","总成绩 Desc")

dim minid as integer = DataTables("笔试成绩").FInd("天数=\'" & e.DataRow("天数") & "\' and 分组=\'" & e.DataRow("分组") & "\'","总成绩") 

 

参考:

 

http://www.foxtable.com/help/topics/0393.htm