Foxtable(狐表)用户栏目专家坐堂 → 求教累计值问题


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

主题:求教累计值问题

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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33957 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/1/11 0:29:00 [显示全部帖子]

Dim dt As DataTable = DataTables("表A")
For Each dr As DataRow In dt.DataRows
    dr("累计产蛋量") = Math.Round(dt.Compute("Sum(产蛋率)","[批次] = '" & dr("批次") & "' And [日期] <= #" & dr("日期") & "#"),3)
Next

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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33957 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/1/11 21:35:00 [显示全部帖子]

2楼的代码本来就是窗口按钮的代码。

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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33957 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/1/11 21:43:00 [显示全部帖子]

以下是引用liuruihua在2010-1-11 13:59:00的发言:

C版,上面的代码在数据量多时近乎呈死机现象,不得不强行关闭。如果不想通过专门的一列来统计“累计产蛋量”,只要在窗口统计中能实现这样的功能即可,但不知代码如何写如:
Dim b As New SQLGroupTableBuilder("统计表1","表A")
b.Groups.AddDef("批次")
b.Groups.AddDef("日期", DateGroupEnum.Year, "年")
b.Groups.AddDef("日期", DateGroupEnum.month, "月")
b.Groups.AddDef("日期", DateGroupEnum.Day, "日")

b.Totals.Addexp("累计产蛋量","  ? ? ? ? ? ? ?)


请指教!

[此贴子已经被作者于2010-1-11 19:38:14编辑过]



Dim g As New GroupTableBuilder("统计表1", DataTables("表A"))
g.Groups.AddDef("批次")
g.Groups.AddDef("日期", DateGroupEnum.Year, "年")
g.Groups.AddDef("日期", "月")
g.Groups.AddDef("日期", DateGroupEnum.Day, "日")
g.Totals.AddDef("产蛋率",True)
g.TableVisible = false
Tables("窗口1_Table1").DataSource = g.BuildDataSource


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33957 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/1/11 23:57:00 [显示全部帖子]

你的版本不对吧。

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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33957 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/1/12 17:58:00 [显示全部帖子]

以下是引用liuruihua在2010-1-12 16:58:00的发言:
yang版,不管有没有空值,由 GroupTableBuilder改成 SQLGroupTableBuilder就不行,麻烦帮看看如何解决。如定义成: Dim b As New SQLGroupTableBuilder("统计表1","表A")  就不行。


如果不行,说明SQLGroupTableBuilder还没有这个选项。


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33957 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/1/12 18:12:00 [显示全部帖子]

还好测试了一下,不然真冤枉了老六。
你的产蛋率为表达式列,改成数据列即可。

Dim b As New SQLGroupTableBuilder("统计表1","表A")
b.Groups.AddDef("批次")
b.Groups.AddDef("日期", DateGroupEnum.Year, "年")
b.Groups.AddDef("日期", "月")
b.Groups.AddDef("日期", DateGroupEnum.Day, "日")
b.Totals.AddDef("产蛋率",True)
b.TableVisible = false
Tables("窗口1_Table1").DataSource = b.BuildDataSource

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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33957 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/1/12 20:49:00 [显示全部帖子]

Dim b As New SQLGroupTableBuilder("统计表1","表A")
b.Groups.AddDef("批次")
b.Groups.AddDef("日期", DateGroupEnum.Year, "年")
b.Groups.AddDef("日期", "月")
b.Groups.AddDef("日期", DateGroupEnum.Day, "日")
b.Totals.AddExp("产蛋率","([合格蛋] + [破蛋]) / [存栏母鸡]",True)
b.TableVisible = false
Tables("窗口1_Table1").DataSource = b.BuildDataSource

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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33957 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/1/13 12:56:00 [显示全部帖子]

速度应该不是大问题,你在大数据量情况下测试一下下面的代码,如果还嫌慢告诉我,还可以提速的。

DataColChanged事件代码。

Dim dt As DataTable = DataTables("表A")
Dim drs As List(Of DataRow) = dt.Select("[批次] = '" & dr("批次") & "' And [日期] <= #" & dr("日期") & "#")
For n As integer = 0 To drs.Count - 1
    dr("累计产蛋量") = Math.Round(dt.Compute("Sum(产蛋率)","[批次] = '" & dr("批次") & "' And [日期] <= #" & dr("日期") & "#"),3)
Next


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33957 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/1/13 22:13:00 [显示全部帖子]

不可能的。
SQLGroupTableBuilder是从后台进行统计,表达式列是不保存的后台根本没有此列的数据,别撞了南墙都不回头。

 回到顶部