以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  数据平均问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=178808)

--  作者:刘林
--  发布时间: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   

 

 


--  作者:fangdejin
--  发布时间:2022/7/21 20:02:00
--  
你或者换个平均算法 
--  作者:有点蓝
--  发布时间:2022/7/21 20:25:00
--  
试试:Dim avg1 As Integer = tb5.sqlCompute("avg(分班成绩)","预分班=\'" & r("班级") & "\'")
--  作者:刘林
--  发布时间:2022/8/11 10:31:00
--  

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

--  作者:有点蓝
--  发布时间:2022/8/11 10:51:00
--  
把成绩列改为高精度类型
--  作者:刘林
--  发布时间:2022/8/11 11:12:00
--  
If tb10.DataTable.DataCols.Contains("平均成绩")=False
    tb10.DataTable.DataCols.Add("平均成绩",Gettype(Decimal))
    tb10.DataTable.DataCols("平均成绩").SetFormat("0.00")

还是一样


--  作者:有点蓝
--  发布时间:2022/8/11 11:22:00
--  
原来表格的分班成绩列呢,改为高精度了吗?
[此贴子已经被作者于2022/8/11 11:22:19编辑过]

--  作者:刘林
--  发布时间: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()


--  作者:有点蓝
--  发布时间:2022/8/11 13:59:00
--  
我测试没有这种问题。请上传实例测试
--  作者:kaiyu
--  发布时间:2022/8/11 14:16:00
--  
   Dim avg1 As Integer = tb5.Compute("avg(分班成绩)","预分班=\'" & r("班级") & "\'") 这里定义成整型