以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]条件表达式如何写?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=68954)

--  作者:sxy_123456
--  发布时间:2015/5/28 10:05:00
--  [求助]条件表达式如何写?
有两个条件:1、计算相同的工程名称的数据
                 2、如果投标单位大于10个去掉两个最大值和最小值,如果投标单位大于7小于10个去掉一个最大值和最小值
                 3、计算平均值
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb


[此贴子已经被作者于2015/5/28 10:06:16编辑过]

--  作者:Bin
--  发布时间:2015/5/28 10:07:00
--  
要编写代码才可以实现.具体请上传例子
--  作者:大红袍
--  发布时间:2015/5/28 10:07:00
--  

 需要结合 Select、Comput 等函数。

 

 你上传具体例子吧,要怎么计算,计算结果放在哪里,都要说明


--  作者:sxy_123456
--  发布时间:2015/5/28 10:08:00
--  
已上传例子
--  作者:大红袍
--  发布时间:2015/5/28 10:18:00
--  
For Each gcmc As String In DataTables("表A").GetValues("工程名称")
    Dim drs As List(Of DataRow) = DataTables("表A").Select("工程名称 = \'" & gcmc & "\'", "投标价格")
    Dim sum As Double = DataTables("表A").compute("sum(投标价格)", "工程名称 = \'" & gcmc & "\'")
    If drs.Count > 10 Then
        sum = (sum - (drs(0)("投标价格") + drs(1)("投标价格") + drs(drs.Count-1)("投标价格") + drs(drs.Count-1)("投标价格"))) / (drs.Count - 4)
    ElseIf drs.Count > 7 Then
        sum = (sum - (drs(0)("投标价格") + drs(drs.Count-1)("投标价格"))) / (drs.Count - 2)
    End If
    DataTables("表A").ReplaceFor("平均值", sum, "工程名称 = \'" & gcmc & "\'")
Next

--  作者:sxy_123456
--  发布时间:2015/5/28 10:59:00
--  
大于10个的计算结果不对啊?
--  作者:大红袍
--  发布时间:2015/5/28 11:01:00
--  

sum = (sum - (drs(0)("投标价格") + drs(1)("投标价格") + drs(drs.Count-1)("投标价格") + drs(drs.Count-1)("投标价格"))) / (drs.Count - 4)

改成

 

sum = (sum - (drs(0)("投标价格") + drs(1)("投标价格") + drs(drs.Count-1)("投标价格") + drs(drs.Count-2)("投标价格"))) / (drs.Count - 4)

 

你要看得懂代码,不然没进步啊


--  作者:sxy_123456
--  发布时间:2015/5/28 11:02:00
--  
说的对,谢谢