Foxtable(狐表)用户栏目专家坐堂 → [求助]数组相关


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

主题:[求助]数组相关

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


加好友 发短信
等级:小狐 帖子:348 积分:2805 威望:0 精华:0 注册:2016/8/24 10:39:00
[求助]数组相关  发帖心情 Post By:2018/5/10 8:54:00 [只看该作者]

函数:GetValues是从表中筛选不重复的数据以集合的形式返回,我现在需要不去除重复,有没有类似的函数
[此贴子已经被作者于2018/5/10 8:54:39编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/5/10 9:17:00 [只看该作者]


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


加好友 发短信
等级:小狐 帖子:348 积分:2805 威望:0 精华:0 注册:2016/8/24 10:39:00
  发帖心情 Post By:2018/5/10 9:56:00 [只看该作者]

老师,麻烦帮我改下这段代码,datarow怎么转换成double类型:
Dim r As Row = Tables("工作业绩").Current
Dim drs As List(Of DataRow)
Dim Arys() As DataRow
drs = DataTables("工作业绩进度记录").Select("[Cid] = '" & r("Pid") & "'")
Arys = drs.ToArray() 
array.sort(Arys)
Dim sum As Double = 0
For i As Integer = 1 To Arys.length - 2
    sum += Arys(i)
    output.show(Arys(i))
Next
msgbox(sum / (Arys.length - 2))

[此贴子已经被作者于2018/5/10 9:56:36编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/5/10 10:15:00 [只看该作者]

Dim r As Row = Tables("工作业绩").Current
Dim drs As List(Of DataRow)
drs = DataTables("工作业绩进度记录").Select("[Cid] = '" & r("Pid") & "'", "某列")

Dim sum As Double = 0
For i As Integer = 1 To drs.count - 2
    sum += drs(i)("某列")
    output.show(drs(i)("某列"))
Next
msgbox(sum / (drs.count - 2))


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


加好友 发短信
等级:小狐 帖子:348 积分:2805 威望:0 精华:0 注册:2016/8/24 10:39:00
  发帖心情 Post By:2018/5/10 10:26:00 [只看该作者]

感谢老师,问题解决了

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


加好友 发短信
等级:小狐 帖子:348 积分:2805 威望:0 精华:0 注册:2016/8/24 10:39:00
  发帖心情 Post By:2018/5/10 11:02:00 [只看该作者]

老师,经过测试发现一个问题,这段代码其实我是想通过数组,去除一个最高值,和一个最低值之后求平均值的,老师帮我修改后的代码在正数的情况可以无误的求出平均值,但是在有负数的情况下,这个代码求出来的平均值就不正确了,例如我我通过代码获取的集合是{1,-1,5},代码求出的平均值为-1,二实际上我需要算出的平均数应该为1。所以这段代码还应该如何处理下:
Dim r As Row = Tables("工作业绩").Current
Dim drs As List(Of DataRow)
drs = DataTables("工作业绩进度记录").Select("[Cid] = '" & r("Pid") & "'", "进度")
Dim sum As Double = 0
For i As Integer = 1 To drs.count - 2
    sum += drs(i)("进度")
    output.show(drs(i)("进度"))
Next
r("进度") = sum / (drs.count - 2)

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/5/10 11:05:00 [只看该作者]

1、你进度列,必须是【整数或者双精度小数】

 

2、drs = DataTables("工作业绩进度记录").Select("[Cid] = '" & r("Pid") & "'", "进度") 是排序了的


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


加好友 发短信
等级:小狐 帖子:348 积分:2805 威望:0 精华:0 注册:2016/8/24 10:39:00
  发帖心情 Post By:2018/5/10 11:27:00 [只看该作者]

感谢

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


加好友 发短信
等级:小狐 帖子:348 积分:2805 威望:0 精华:0 注册:2016/8/24 10:39:00
  发帖心情 Post By:2018/5/10 16:13:00 [只看该作者]

因为进度字段需要设置成真实值与显示值的效果,所以只能设置成字符型,如果将进度字段设置成整型或者浮点型,那么界面上的显示值就为空白了。所有我舍弃了这种集合的方式求平均值,直接用SQL语句来实现平均值的求法。
Dim t1 As Table = Tables("不足之处")
Dim r As Row = t1.Current
Dim cmd As New SQLCommand
Dim avg As double
cmd.C
cmd.CommandText = "selec t (SUM(convert(numeric(28,3),同事评价))-MAX(convert(numeric(28,3),同事评价))-MIN(convert(numeric(28,3),同事评价)))/(case when count(*)>=3 then (count(*)-2) else count(*) end) f rom {创新展示评价记录} where Cid = '" & r("Pid") & "'"
avg = cmd.ExecuteScalar()
r("同事评价") = avg
t1.Save
[此贴子已经被作者于2018/5/10 16:17:36编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/5/10 16:15:00 [只看该作者]

再加入一个表达式列,引用【进度】列的值即可。使用此表达式列处理。

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