Foxtable(狐表)用户栏目专家坐堂 → 数据平均问题


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

主题:数据平均问题

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


加好友 发短信
等级:八尾狐 帖子:1938 积分:14865 威望:0 精华:0 注册:2016/4/28 9:58:00
数据平均问题  发帖心情 Post By:2022/7/21 19:37:00 [显示全部帖子]

If tb10.DataTable.DataCols.Contains("平均成绩")=False
    tb10.DataTable.DataCols.Add("平均成绩",Gettype(Double))
    tb10.DataTable.DataCols("平均成绩").SetFormat("0.00")

End If

 

分班成绩只有一个数据621.5

 

 

Dim avg1 As Integer = tb5.Compute("avg(分班成绩)","预分班='" & r("班级") & "'")

但avg1=622.00   

 

 


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


加好友 发短信
等级:八尾狐 帖子:1938 积分:14865 威望:0 精华:0 注册:2016/4/28 9:58:00
  发帖心情 Post By:2022/8/11 10:31:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:8jc91gkri8v3e%hhdqk7$q1.png
图片点击可在新窗口打开查看
试了还是不行,我只测试了一个数据,4班只有一个661.5,但平均为662,一直不明白,到底哪里有问题,这算不算是bug
[此贴子已经被作者于2022/8/11 10:31:58编辑过]

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


加好友 发短信
等级:八尾狐 帖子:1938 积分:14865 威望:0 精华:0 注册:2016/4/28 9:58:00
  发帖心情 Post By:2022/8/11 11:12:00 [显示全部帖子]

If tb10.DataTable.DataCols.Contains("平均成绩")=False
    tb10.DataTable.DataCols.Add("平均成绩",Gettype(Decimal))
    tb10.DataTable.DataCols("平均成绩").SetFormat("0.00")

还是一样


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


加好友 发短信
等级:八尾狐 帖子:1938 积分:14865 威望:0 精华:0 注册:2016/4/28 9:58:00
  发帖心情 Post By:2022/8/11 11:41:00 [显示全部帖子]

改了,还是不行,是不是跟是用的fill方式有关呢

Dim tb5 As Table=Tables("学生信息A_table5")
Dim tb10 As Table=Tables("学生信息A_table10")
Dim text1 As WinForm.TextBox= e.Form.Controls("textbox1")
Dim cb3 As WinForm.ComboBox= e.Form.Controls("combobox3")
Dim cb4 As WinForm.ComboBox= e.Form.Controls("combobox4")
Dim nj As String= e.Sender.text
tb5.F   ill("Sel ect _identify ,学生姓名,身份证件号,联系电话,班级,性别,分班成绩,指定分班,预分班,备注 From {学生信息} where 学校名称='" & _usergroup & "' and 年级='" & nj & "' and  状态 Like '%在读%' order by 学生姓名","user",False)
tb5.AllowEdit=True
DataTables("学生信息A_table5").GlobalHandler.DataColChanged = True
Dim njdm As String =   "'%" & nj & "%'"
tb10.Fill("Se  lect _identify ,单位,部门 as 班级,角色,密码,是否可用,姓名 as 班主任,分班人数 From {单位用户} where 单位='" & _usergroup & "' and 部门 like " & njdm & "  order by 部门","user",False)
Dim bs As Integer= DataTables("单位用户").SQLCompute("count(部门)"," 部门 like " & njdm & " And 单位= '" & _usergroup &"'" )
tb10.SetColVisibleWidth("班级|20|班主任|20|分班人数|20")
tb10.AutoSizeCols
tb10.AllowEdit=True
Dim bslist As String
For i As  Integer=1 To bs
    bslist=bslist & i & "|"
Next
bslist = "|  |" & bslist
bslist=bslist.trim("|")
For Each c As Col In tb5.Cols
    If c.Name="指定分班"
        c.AllowDirectType=False
        c.ComboList = bslist
    End If
Next
For Each c As Col In tb10.Cols
    If c.Name="班级"
        c.AllowEdit=False
    End If
Next
cb3.text=bs
tb5.sort="性别,学生姓名"

text1.Enabled=True
cb4.ComboList=bslist
If tb10.DataTable.DataCols.Contains("男生")=False
    tb10.DataTable.DataCols.Add("男生",Gettype(Integer))
End If
If tb10.DataTable.DataCols.Contains("女生")=False    
    tb10.DataTable.DataCols.Add("女生",Gettype(Integer))
End If
If tb10.DataTable.DataCols.Contains("平均成绩")=False
    tb10.DataTable.DataCols.Add("平均成绩",Gettype(Decimal))
    tb10.DataTable.DataCols("平均成绩").SetFormat("0.00")

End If

For Each r As Row In tb10
    Dim Sum1 As Integer = tb5.Compute("count(学生姓名)","预分班='" & r("班级") & "'")
    Dim Sum2 As Integer = tb5.Compute("count(学生姓名)","性别='男'and  预分班='" & r("班级") & "'")
    Dim Sum3 As Integer = tb5.Compute("count(学生姓名)","性别='女' and 预分班='" & r("班级") & "'")
    Dim avg1 As Integer = tb5.Compute("avg(分班成绩)","预分班='" & r("班级") & "'")
    r("分班人数")=sum1
    r("男生")=sum2
    r("女生")=sum3
    r("平均成绩")=avg1
Next
tb5.AutoSizeCols()
tb10.AutoSizeCols()


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


加好友 发短信
等级:八尾狐 帖子:1938 积分:14865 威望:0 精华:0 注册:2016/4/28 9:58:00
  发帖心情 Post By:2022/8/12 10:11:00 [显示全部帖子]

  Dim avg1 As Decimal = tb5.Compute("avg(分班成绩)","预分班='" & r("班级") & "'")
这样就可以了

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


加好友 发短信
等级:八尾狐 帖子:1938 积分:14865 威望:0 精华:0 注册:2016/4/28 9:58:00
  发帖心情 Post By:2022/8/13 10:24:00 [显示全部帖子]

请问老师,我想将表按性别,成绩排序后,按记录依次按8个一组,随机将1-8这8个数字填到每个组的8个数据中去,这样可实现相对均衡,这该怎么处理

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


加好友 发短信
等级:八尾狐 帖子:1938 积分:14865 威望:0 精华:0 注册:2016/4/28 9:58:00
  发帖心情 Post By:2022/8/14 22:27:00 [显示全部帖子]

Dim tb5 As Table= Tables("学生信息A_table5")
Dim tb10 As Table= Tables("学生信息A_table10")
Dim cb2 As String = e.Form.Controls("combobox2").text
Dim bs As Integer= e.Form.Controls("combobox3").text
Dim add As Boolean=True
tb5.sort="性别,分班成绩 desc"
Dim cnt As Integer = tb5.Rows.count
For i As Integer = 0 To cnt - 1 Step bs '8个一组
    Dim lst2 As New List(Of Integer)
    For m As Integer = 1 To bs '分配的8个数字
        lst2.Add(m)
    Next    
    Dim n As Integer = Math.Min(i + bs-1, cnt - 1)
    For j As Integer = i To n
        Dim k As Integer = Rand.Next(0, lst2.count)
        tb5.Rows(j)("预分班")= cb2 & lst2(k) & "班"
        lst2.RemoveAt(k)
    Next 0
Next 
老师,我这样用就可以了,也给大家分享下

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


加好友 发短信
等级:八尾狐 帖子:1938 积分:14865 威望:0 精华:0 注册:2016/4/28 9:58:00
  发帖心情 Post By:2022/8/14 22:31:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20220814222830.png
图片点击可在新窗口打开查看
现在我想在上面的基础上增加一个功能,就是班级有三类A,B,C类班,学生先按成绩分为A,B,C三类,现在要将A类学生均衡分班A类班级,这又怎么来改整来,谢谢

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


加好友 发短信
等级:八尾狐 帖子:1938 积分:14865 威望:0 精华:0 注册:2016/4/28 9:58:00
  发帖心情 Post By:2022/8/16 9:41:00 [显示全部帖子]

Dim tb5 As Table= Tables("学生信息A_table5")
Dim tb10 As Table= Tables("学生信息A_table10")
Dim cb2 As String = e.Form.Controls("combobox2").text
Dim add As Boolean=True
tb5.sort="性别,分班成绩 desc"
Dim bjnxs As List(Of String) = tb10.DataTable.GetValues("班级类型")
For Each bjnx  As String In bjnxs
    Dim bjlist As New List(Of String)
    For Each r As Row In tb10.Rows
        If r("班级类型")=bjnx
            bjlist.add(r("班级"))
        End If
    Next
    tb5.Filter="班级类型='" & bjnx & "'"
    Dim cnt As Integer =tb5.Rows.count
    Dim bs As Integer = bjlist.Count
    For i As Integer = 0 To cnt - 1 Step bs '8个一组
        Dim lst2 As New List(Of Integer)
        For m As Integer = 1 To bs '分配的8个数字
            lst2.Add(m)
        Next
        Dim n As Integer = Math.Min(i + bs-1, cnt - 1)
        For j As Integer = i To n
            Dim k As Integer = Rand.Next(0, lst2.count)
            tb5.Rows(j)("预分班")= bjlist(k)
            lst2.RemoveAt(k)
        Next
    Next   
Next
tb5.Filter=""

老师,请问我这样改后为什么同类班人数没均衡,请帮看下哪里有问题,谢谢


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


加好友 发短信
等级:八尾狐 帖子:1938 积分:14865 威望:0 精华:0 注册:2016/4/28 9:58:00
  发帖心情 Post By:2022/8/16 10:03:00 [显示全部帖子]


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

 

我设想的是同类班级人如A类3个班,在人数,成绩,性别上随机均衡,现在主要存在的是人数就不均衡

[此贴子已经被作者于2022/8/16 10:03:30编辑过]

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