以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]关于AddNew及跨表统计  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=108159)

--  作者:l1q2lq
--  发布时间:2017/10/17 14:34:00
--  [求助]关于AddNew及跨表统计
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
--  发布时间: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,需要怎么优化


--  作者:有点甜
--  发布时间:2017/10/17 15:04:00
--  

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

 

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

 

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


--  作者:l1q2lq
--  发布时间:2017/10/17 15:09:00
--  
第1条,我希望AddNew行后直接参与统计,而不是必须要重置列

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

--  作者:l1q2lq
--  发布时间:2017/10/17 15:19:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:辅料管理 - 副本.rar


--  作者:l1q2lq
--  发布时间: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
--  发布时间:2017/10/17 15:40:00
--  
例子已上传,麻烦帮忙解决一下
--  作者:有点甜
--  发布时间: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
--  发布时间:2017/10/17 16:37:00
--  
老师,在帮忙看一下第一个问题,新增行怎么直接进行计算统计,例子里必须要重置列,很不方便
--  作者:有点蓝
--  发布时间:2017/10/17 17:25:00
--  
去掉systemready = False和systemready =True