Foxtable(狐表)用户栏目专家坐堂 → [求助]关于AddNew及跨表统计


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

主题:[求助]关于AddNew及跨表统计

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


加好友 发短信
等级:一尾狐 帖子:422 积分:3430 威望:0 精华:0 注册:2015/5/20 8:44:00
[求助]关于AddNew及跨表统计  发帖心情 Post By:2017/10/17 14:34:00 [只看该作者]

For Each r1 As Row In Tables("入库导入_采购订单")
    If r1("本次交货") IsNot Nothing Or r1("本次交货") > 0
        Dim  r2 As Row = Tables("入库表").AddNew
        r2("编号") = r1("编号")
        r2("入库数量") = r1("本次交货")
        Else
    End If
Next
用这段代码在入库表里新增数据,入库表里的数据需要跨表统计,
入库表:
Select Case e.DataCol.Name
    Case "入库数量"
        Dim pr As DataRow
        pr = DataTables("库存").Find("编号 = '" & e.DataRow("编号") & "'")
        If pr IsNot Nothing Then
            DataTables("库存").DataCols("编号").RaiseDataColChanged(pr)
        End If
End Select
库存表:
If e.DataCol.Name = "编号" Then 
    Dim Filter As String = "[编号] = '" & e.NewValue & "'"
    e.DataRow("入库合计") = DataTables("入库表").Compute("Sum(入库数量)", Filter)    
End If

但是新增的数据并不直接进行计算,每次都需要重置列,重置列运行速度很慢,需要怎么优化


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


加好友 发短信
等级:一尾狐 帖子:422 积分:3430 威望:0 精华:0 注册:2015/5/20 8:44:00
  发帖心情 Post By:2017/10/17 14:45:00 [只看该作者]

另外问一下:
For Each r1 As Row In Tables("入库导入_采购订单")
        Dim  r2 As Row = Tables("入库表").AddNew
        r2("编号") = r1("编号")
        r2("入库数量") = r1("本次交货")
        Else
Next
Tables("入库表")里只合并Tables("入库导入_采购订单")里"本次交货"有数据的行,"本次交货"空值或者为0的行不AddNew,需要怎么优化


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/10/17 15:04:00 [只看该作者]

1、代码没问题的,实例发上来测试。

 

2、库存表,你编号有重复的?

 

3、加上判断 If r1("本次交货") > 0 Then


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


加好友 发短信
等级:一尾狐 帖子:422 积分:3430 威望:0 精华:0 注册:2015/5/20 8:44:00
  发帖心情 Post By:2017/10/17 15:09:00 [只看该作者]

第1条,我希望AddNew行后直接参与统计,而不是必须要重置列

第3条,我加了判断 没有值的行依然被Add上去了
[此贴子已经被作者于2017/10/17 15:37:05编辑过]

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


加好友 发短信
等级:一尾狐 帖子:422 积分:3430 威望:0 精华:0 注册:2015/5/20 8:44:00
  发帖心情 Post By:2017/10/17 15:19:00 [只看该作者]

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


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


加好友 发短信
等级:一尾狐 帖子:422 积分:3430 威望:0 精华:0 注册:2015/5/20 8:44:00
  发帖心情 Post By:2017/10/17 15:20:00 [只看该作者]

密码 kf888

systemready = False
For Each r1 As Row In Tables("入库导入_采购订单")
    If r1("本次交货") IsNot Nothing Or r1("本次交货") > 0
        Dim  r2 As Row = Tables("入库表").AddNew
        r2("编号") = r1("编号")
        r2("入库数量") = r1("本次交货")
        r2("入库批次") = r1("辅料批次")
        r2("订单数量") = r1("订单数量")
        r2("订单批次") = r1("订单批次")
        r2("单价") = r1("单价")
        r2("入库时间") = Date.Now
        r2("部门") = "" & user.Name & ""
        r1("本次交货") = Nothing
    Else
    End If
Next
systemready =True
e.Form.close
用这段代码在入库导入窗口,作用:在入库表里新增数据,入库表里的数据需要跨表统计,

入库表表事件:
Select Case e.DataCol.Name
    Case "入库数量"
        Dim pr As DataRow
        pr = DataTables("辅料库存").Find("辅料部门 = '" & e.DataRow("辅料部门") & "'")
        If pr IsNot Nothing Then
            DataTables("辅料库存").DataCols("辅料部门").RaiseDataColChanged(pr)
        End If
End Select

辅料库存表表事件
If e.DataCol.Name = "辅料部门" Then 
    Dim Filter As String = "[辅料部门] = '" & e.NewValue & "'"
    e.DataRow("入库合计") = DataTables("入库表").Compute("Sum(入库数量)", Filter)    
End If

但是新增的数据并不直接进行计算,每次都需要重置列,重置列运行速度很慢,需要怎么优化

[此贴子已经被作者于2017/10/17 15:23:02编辑过]

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


加好友 发短信
等级:一尾狐 帖子:422 积分:3430 威望:0 精华:0 注册:2015/5/20 8:44:00
  发帖心情 Post By:2017/10/17 15:40:00 [只看该作者]

例子已上传,麻烦帮忙解决一下

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/10/17 16:22:00 [只看该作者]

systemready = False
For Each r1 As Row In Tables("入库导入_采购订单")
    If r1("本次交货") IsNot Nothing OrElse r1("本次交货") > 0
        Dim pr = DataTables("库存").Find("编号 = '" & r1("编号") & "'")
        If pr IsNot Nothing Then
            pr("入库合计") += r1("本次交货")
        End If

        Dim  r2 As Row = Tables("入库表").AddNew
        r2("编号") = r1("编号")
        r2("入库数量") = r1("本次交货")
        r2("入库批次") = r1("辅料批次")
        r2("订单数量") = r1("订单数量")
        r2("订单批次") = r1("订单批次")
        r2("单价") = r1("单价")
        r2("入库时间") = Date.Now
        r2("部门") = "" & user.Name & ""
        r1("本次交货") = Nothing
    Else
    End If
Next
systemready =True

e.Form.close


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


加好友 发短信
等级:一尾狐 帖子:422 积分:3430 威望:0 精华:0 注册:2015/5/20 8:44:00
  发帖心情 Post By:2017/10/17 16:37:00 [只看该作者]

老师,在帮忙看一下第一个问题,新增行怎么直接进行计算统计,例子里必须要重置列,很不方便

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


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/10/17 17:25:00 [只看该作者]

去掉systemready = False和systemready =True

 回到顶部
总数 15 1 2 下一页