以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请教杂项中自动计算的代码如何写?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=12363)

--  作者:20090530
--  发布时间:2011/8/31 9:23:00
--  请教杂项中自动计算的代码如何写?

请教杂项中自动计算的代码如何写?


--  作者:yangming
--  发布时间:2011/8/31 9:34:00
--  

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

示例二

 

你是问的菜单中的自动计算吧?

在菜单的系统事件:AfterSelRangeChange中的代码

Dim t As Table
RibbonMenu.StatusBar.Message3 = ""
Vars("SysUpdateAggregate") = False
If e.Table IsNot CurrentTable OrElse CurrentTable Is Nothing Then
    Return
Else
    t = CurrentTable
End If
If t.TopRow = t.BottomRow AndAlso t.LeftCol = t.RightCol Then
    Return
End If
For c As Integer = t.LeftCol To t.RightCol
    If c < 1 Then
        Continue For
    End If
    If t.Cols(c).IsNumeric = False Then
        Return
    End If
Next
Vars("SysUpdateAggregate") =  True

 

然后再在各选项中的代码,比如自动计算中的代码:

RaiseSystemEvent(CurrentTable,SystemEventTypeEnum.AfterSelRangeChange)

[此贴子已经被作者于2011-8-31 9:53:56编辑过]

--  作者:20090530
--  发布时间:2011/8/31 9:56:00
--  

谢谢您!

我的意思是比如有40名选手,12个评委打分,选出每个队员的最高分、最低分,最终成绩为去掉最高分、最低分的平均值,如何写?


--  作者:yangming
--  发布时间:2011/8/31 9:58:00
--  
以下是引用20090530在2011-8-31 9:56:00的发言:

谢谢您!

我的意思是比如有40名选手,12个评委打分,选出每个队员的最高分、最低分,最终成绩为去掉最高分、最低分的平均值,如何写?

你的意思和题目差的太远了,呵,最好做出狐表文件上传


--  作者:狐狸爸爸
--  发布时间:2011/8/31 10:00:00
--  
将表设计好,输入一些测试数据,然后传上来,我可以帮你做一下。
[此贴子已经被作者于2011-8-31 10:51:15编辑过]

--  作者:20090530
--  发布时间:2011/8/31 10:37:00
--  

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:成绩.xls

有劳了!


--  作者:紙上不談兵
--  发布时间:2011/8/31 11:25:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.table


--  作者:20090530
--  发布时间:2011/8/31 11:36:00
--  

简洁,精炼。。。

 

学习的楷模!


--  作者:169163
--  发布时间:2011/8/31 16:09:00
--  
前面的例子有点特殊,比如评委分别为张三、李四、王五。。。,又该如何?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:成绩.xls


--  作者:hhbb
--  发布时间:2011/8/31 16:39:00
--  

Dim Ls As String ="张三,李四,王五,马七,杨八,李二,财经,和平,何亮,黑乎,白板,高挂"
If  ("," & Ls & ",").IndexOf("," & e.DataCol.Name & ",") > -1 Then
    Dim dr As DataRow = e.DataRow
    dr("最高分") = dr("张三")
    dr("最低分") = dr("张三")
    For Each s As String In Ls.split(",")
        dr("最高分") =Math.Max(dr("最高分"),dr(s))
        dr("最低分") =Math.Min(dr("最低分"),dr(s))
    Next
End If
[此贴子已经被作者于2011-8-31 16:55:47编辑过]