Rss & SiteMap
Foxtable(狐表) http://www.foxtable.com
类似于下图中的表:
现在想自动增加一个表达式列,数据结果为:每个数据值在相同类中的百分比。
这个问题如果用记录循环的方式,很好解决。但如果数据记录非常庞大,其计算效率可能会比较低。就尝试用一条表达式,结果总是出错,例子在这里:
下载信息 [文件大小: 下载次数: ] | |
![]() |
如果用易表,一个刷新公式就搞定了:[值]/Sumfor("表1","值","类","=",[类])
为什么在foxtable中反而不能实现呢?
Dim Filter As String
Select Case e.DataCol.Name
Case "类"
If e.DataRow.IsNull("类") = False AndAlso e.DataRow.IsNull("组") = False Then
Filter = "[类] = '" & e.DataRow("类") & "'"
Dim Sum1 As Double = Tables("表A").Compute("Sum(值)",Filter)
e.DataRow("总值")=sum1
e.DataRow("百分比")=e.DataRow("值")/e.DataRow("总值")
End If
End Select
我做的,是放在刷新列里的,没有用动态加载列.
Dim Filter As String
Select Case e.DataCol.Name
Case "类"
If e.DataRow.IsNull("类") = False AndAlso e.DataRow.IsNull("组") = False Then
Filter = "[类] = '" & e.DataRow("类") & "'"
Dim Sum1 As Double = Tables("表A").Compute("Sum(值)",Filter)
e.DataRow("总值")=sum1
e.DataRow("百分比")=e.DataRow("值")/e.DataRow("总值")
End If
End Select
我做的,是放在刷新列里的,没有用动态加载列.
这个方法在常规情况下进行处理是可以的,但一楼的例子在实际应用中是动态生成的统计表,生成统计表时还需要加个列,以便自动生成百分比数据。
老六已经说了,foxtable的表达式是没有办法的,只能用代码解决
郁闷的是,连replacefor都只能替换一个固定的值,无法用表达式!
只能用select得到记录集合然后逐行替换。晕。。
这个方法在常规情况下进行处理是可以的,但一楼的例子在实际应用中是动态生成的统计表,生成统计表时还需要加个列,以便自动生成百分比数据。
老六已经说了,foxtable的表达式是没有办法的,只能用代码解决
blackzhu的代码可以放在:
全局表事件 http://help.foxtable.com/topics/0671.htm
在项目属性中,除了可以设置项目事件,还可以设置全局表事件。
全局表事件对所有的表有效,包括通过代码增加的临时表。
全局表事件的e参数和对应的表事件完全一样。