Foxtable(狐表)用户栏目专家坐堂 → 关于实时统计问题


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

主题:关于实时统计问题

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/2/23 15:36:00 [只看该作者]

If e.DataCol.Name = "支出金额" Then
    Dim pr As DataRow
    pr = DataTables("资金账户").sqlFind("账户名称 = '" & e.DataRow("结算账户") & "'")
    e.DataRow.Save
    If pr IsNot Nothing Then
        pr("支出金额汇总") = DataTables("支出表").SqlCompute("Sum(支出金额)", "[结算账户] = '" & e.DataRow("结算账户") & "'")
    Else
        pr = DataTables("资金账户").AddNew
        pr("账户名称") = e.DataRow("结算账户")
        pr("支出金额汇总") = DataTables("支出表").SqlCompute("Sum(支出金额)", "[结算账户] = '" & e.DataRow("结算账户") & "'")
    End If
    pr.Save
End If

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


加好友 发短信
等级:小狐 帖子:391 积分:3290 威望:0 精华:0 注册:2014/4/9 10:04:00
  发帖心情 Post By:2017/2/23 15:53:00 [只看该作者]

试了没反应啊,我也重置列了啊。

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/2/23 15:56:00 [只看该作者]

If e.DataCol.Name = "支出金额" Then
    Dim pr As DataRow
    pr = DataTables("资金账户").Find("账户名称 = '" & e.DataRow("结算账户") & "'")
    If pr Is Nothing Then
        pr = DataTables("资金账户").sqlFind("账户名称 = '" & e.DataRow("结算账户") & "'")
    End If
    e.DataRow.Save
    If pr IsNot Nothing Then
        pr("支出金额汇总") = DataTables("支出表").SqlCompute("Sum(支出金额)", "[结算账户] = '" & e.DataRow("结算账户") & "'")
    Else
        pr = DataTables("资金账户").AddNew
        pr("账户名称") = e.DataRow("结算账户")
        pr("支出金额汇总") = DataTables("支出表").SqlCompute("Sum(支出金额)", "[结算账户] = '" & e.DataRow("结算账户") & "'")
    End If
    pr.Save
End If

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


加好友 发短信
等级:小狐 帖子:391 积分:3290 威望:0 精华:0 注册:2014/4/9 10:04:00
  发帖心情 Post By:2017/2/23 16:10:00 [只看该作者]

以上问题解决,但有个困惑,如下图:

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

上图中的表准备把他放到窗口中的某个位置,用来动态显示并统计其他表中的数据。(此表的目的就是为了展示其他表的汇总数据)请问老师是用以上的方式效率高,还是用SQLGroupTableBuilder用代码建立
虚拟统计表然后把虚拟统计表展示在窗口中效率高?

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/2/23 16:11:00 [只看该作者]

 用13楼的方式效率高......

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


加好友 发短信
等级:小狐 帖子:391 积分:3290 威望:0 精华:0 注册:2014/4/9 10:04:00
  发帖心情 Post By:2017/2/23 17:40:00 [只看该作者]

明白了,另外如果数据是通过窗口中按钮写代码添加的(没有用户窗口表),上面的代码放在datacolchanged就失效了,如何把代码写到窗口的保存按钮中。

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/2/23 17:56:00 [只看该作者]

 只要你修改了支出表的列值,都会触发datacolchanged事件的,也肯定有效。

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


加好友 发短信
等级:小狐 帖子:391 积分:3290 威望:0 精华:0 注册:2014/4/9 10:04:00
  发帖心情 Post By:2017/2/24 0:59:00 [只看该作者]

嗯,的确,我重置一次以后就好了。但目前只是改“金额”列会自动计算,如果我要加一列“结算账户”呢,如何改?
我在判断前加  If e.DataCol.Name = "支出金额" orelse e.datacol.name="结算账户“ Then只有一行数据会有变化,其实改了收入表的结算账户名称会影响资金账户两行数据的。(一个增加,一个减少)


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

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


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


加好友 发短信
等级:小狐 帖子:391 积分:3290 威望:0 精华:0 注册:2014/4/9 10:04:00
  发帖心情 Post By:2017/2/24 1:16:00 [只看该作者]

这是修改数据的代码,有问题吗?
If Forms("支出管理").Opened Then
    Dim cr As Row = Forms("窗口1").Controls("Table1").Table.current
    
    cr("支出金额")=num.Value
    cr("结算账户")=cmb.Value
    cr.Save()
End If

Messagebox.show("修改成功","提示")
e.Form.Close

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/2/24 1:17:00 [只看该作者]

If e.DataCol.Name = "支出金额" OrElse e.DataCol.name = "结算账户" Then
    Dim pr As DataRow
    pr = DataTables("资金账户").Find("账户名称 = '" & e.DataRow("结算账户") & "'")
    If pr Is Nothing Then
        pr = DataTables("资金账户").sqlFind("账户名称 = '" & e.DataRow("结算账户") & "'")
    End If
    e.DataRow.Save
    If pr IsNot Nothing Then
        pr("支出金额汇总") = DataTables("支出表").SqlCompute("Sum(支出金额)", "[结算账户] = '" & e.DataRow("结算账户") & "'")
    Else
        pr = DataTables("资金账户").AddNew
        pr("账户名称") = e.DataRow("结算账户")
        pr("支出金额汇总") = DataTables("支出表").SqlCompute("Sum(支出金额)", "[结算账户] = '" & e.DataRow("结算账户") & "'")
    End If
    pr.Save
End If

If e.DataCol.name = "结算账户" Then
    Dim pr As DataRow
    pr = DataTables("资金账户").Find("账户名称 = '" & e.oldvalue & "'")
    If pr Is Nothing Then
        pr = DataTables("资金账户").sqlFind("账户名称 = '" & e.oldvalue & "'")
    End If
    e.DataRow.Save
    If pr IsNot Nothing Then
        pr("支出金额汇总") = DataTables("支出表").SqlCompute("Sum(支出金额)", "[结算账户] = '" & e.oldValue & "'")
    Else
        pr = DataTables("资金账户").AddNew
        pr("账户名称") = e.DataRow("结算账户")
        pr("支出金额汇总") = DataTables("支出表").SqlCompute("Sum(支出金额)", "[结算账户] = '" & e.oldvalue & "'")
    End If
    pr.Save
End If


 回到顶部
总数 30 上一页 1 2 3 下一页