Foxtable(狐表)用户栏目专家坐堂 → 关于表达式列的问题


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

主题:关于表达式列的问题

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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
关于表达式列的问题  发帖心情 Post By:2010/11/18 14:51:00 [显示全部帖子]

类似于下图中的表:


图片点击可在新窗口打开查看此主题相关图片如下:22.jpg
图片点击可在新窗口打开查看

 

现在想自动增加一个表达式列,数据结果为:每个数据值在相同类中的百分比。

 

这个问题如果用记录循环的方式,很好解决。但如果数据记录非常庞大,其计算效率可能会比较低。就尝试用一条表达式,结果总是出错,例子在这里:

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目11.rar

如果用易表,一个刷新公式就搞定了:[值]/Sumfor("表1","值","类","=",[类])

为什么在foxtable中反而不能实现呢?


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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2010/11/18 17:01:00 [显示全部帖子]

以下是引用blackzhu在2010-11-18 16:33:00的发言:

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的表达式是没有办法的,只能用代码解决


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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2010/11/18 17:08:00 [显示全部帖子]

以下是引用czy在2010-11-18 15:42:00的发言:
狐表表达式的几个函数太弱智,没有比较条件,看来你的问题用表达式直接运算是不可能的了。
[此贴子已经被作者于2010-11-18 15:49:12编辑过]

 

郁闷的是,连replacefor都只能替换一个固定的值,无法用表达式!

只能用select得到记录集合然后逐行替换。晕。。

[此贴子已经被作者于2010-11-18 17:08:42编辑过]

 回到顶部