以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助] 跨表引用  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=128423)

--  作者:mirco
--  发布时间:2018/12/5 20:44:00
--  [求助] 跨表引用

老师,附件订单表有一个总金额,是需要统计订单明细中同一订单编号下的金额,统计后回写入订单表中。

订单表总金额是数据列,订单明细的金额列是表达式列,金额=数量*单价,如何设计?请赐教,万分感谢!

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


--  作者:有点甜
--  发布时间:2018/12/5 21:24:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2 (2).table


--  作者:mirco
--  发布时间:2018/12/5 21:38:00
--  
图片点击可在新窗口打开查看
老师,下载打开显示文件版本过高,无法正常打开,请升级您的FOXTABLE!,什么原因?谢谢!
[此贴子已经被作者于2018/12/5 22:01:53编辑过]

--  作者:有点甜
--  发布时间:2018/12/5 21:53:00
--  
我打开测试没问题。没看到你发的图片,请正确上传。
--  作者:mirco
--  发布时间:2018/12/5 21:58:00
--  
老师,下载打开显示文件版本过高,无法正常打开,请升级您的FOXTABLE!,什么原因?谢谢!
--  作者:有点甜
--  发布时间:2018/12/5 22:02:00
--  
升级你的foxtable,下载最新版安装。
--  作者:mirco
--  发布时间:2018/12/5 22:53:00
--  

老师,可以了,您是否在订单表的DataColChanged表事件中加了代码:

If e.DataCol.Name = "订单编号" Then \'发生变化的是产品列.
    \'则累计订单表中同名产品总的销售量,然后赋值给变动行的数量列
    e.DataRow("总金额") = DataTables("订单明细").Compute("Sum(金额)", "订单编号 = \'" & e.NewValue & "\'")
End If

附件中但是我把他加上,还是出不来!请看看原因,谢谢!

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


--  作者:有点甜
--  发布时间:2018/12/5 22:59:00
--  
父表、子表的datacolchanged事件,都加了代码。
--  作者:mirco
--  发布时间:2018/12/5 23:17:00
--  
喔,您在明细表中加了:Select e.DataCol.Name
    Case "订单编号"
        If e.DataRow.IsNull("订单编号") Then
            e.DataRow("序号1") = Nothing
        Else
            Dim lb As String = e.DataRow("订单编号")
            If e.DataRow("序号1").StartsWith(lb) = False \'如果单据编号前缀不符
                Dim max As String
                Dim idx As Integer
                max = e.DataTable.Compute("Max(序号1)","订单编号 = \'" & lb & "\' And [_Identify] <> " & e.DataRow("_Identify")) \'取得该类别的最大编号
                If max > "" Then \'如果存在最大编号
                    idx = CInt(max.Substring(13,2)) + 1 \'获得最大编号的后三位顺序号1,并加1
                Else
                    idx = 1 \'否则顺序号1等于1
                End If
                e.DataRow("序号1") = lb & Format(idx,"00")
            End If
        End If
    Case "数量","单价"
        DataTables("订单").DataCols("订单编号").RaiseDataColChanged("订单编号=\'" & e.DataRow("订单编号") & "\'")
End Select

--  作者:有点甜
--  发布时间:2018/12/5 23:25:00
--  

参考

 

http://www.foxtable.com/webhelp/scr/1454.htm

 

http://www.foxtable.com/webhelp/scr/1472.htm