以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  求大神祝我,数学高手  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=75455)

--  作者:litiemiao2016
--  发布时间:2015/10/9 8:02:00
--  求大神祝我,数学高手
订单表包含 日期 客户名称 品种 订购数量 单价 金额 地点

订单明细表包含  日期 客户名称 品种 数量 地点

订单统计表包含  客户名称 地点 合计数量  总价

就是关于这个订单统计表  我 不会做 或者说没有太好的思路,

这个订单统计要统计  订单明细表中【合计数量】=同一个客户,同一个地点的 数量累计,例如这个值等于Y,【总价】=订单表中这个【客户名称】、这个【地点】的所有订单【订购数量】,然后将这些符合条件的行按照日期的升序排列,例如
符合条件的行有3条,他们的【订购数量】的值为分别为X1,X2,X3,那么就用订单明细表中Y-X1-X2-X3,如果够减去X1,那么就将X1所在的订单表中的金额累计到订单统计表中【总价】中,如果够减X1,还有余数,但是不够减去X2,那么就用X2所在的订单表中的【单价 】乘以 这个余数,将这个值在累计后放入订单统计表中【总价】列中,以此类推,我 需要怎么做呢,或者思路应该是什么样的。
我现在做法是吧所有的未知数定义一个变量,太麻烦了 而且算的还不准 

--  作者:Hyphen
--  发布时间:2015/10/9 8:56:00
--  

首先按客户名称、地点、日期排好序,然后逐行取值判断条件,合并计算数量和总价。


--  作者:大红袍
--  发布时间:2015/10/9 9:12:00
--  

请做例子上传上来。类似的问题你问过了啊,变通来用啊。

 

http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=75219&authorid=0&page=0&star=1

 


--  作者:大红袍
--  发布时间:2015/10/9 9:15:00
--  

订单明细那里,直接得到单价,然后直接得到总价,统计表那里直接合计总价就行啊


--  作者:litiemiao2016
--  发布时间:2015/10/9 10:15:00
--  
我把项目上传给你 帮我看下吧
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.rar


--  作者:大红袍
--  发布时间:2015/10/9 10:16:00
--  
看3楼4楼
--  作者:大红袍
--  发布时间:2015/10/9 10:19:00
--  

直接取明细表的金额列,合计就是答案了啊。

 

 

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


--  作者:litiemiao2016
--  发布时间:2015/10/9 10:57:00
--  
不是 明细表金额列里的单价 是我自己手动填写的  不是这样作  因为单价是从订单表里来得  这样我不需要一个恶一个查吗 就按我说的那样计算
--  作者:大红袍
--  发布时间:2015/10/9 11:01:00
--  
无语,看datacolchanged事件的代码啊,自动查单价啊
--  作者:litiemiao2016
--  发布时间:2015/10/9 12:12:00
--  
Select Case e.DataCol.Name
    Case "客户名称", "提货地点", "提油数量"
        If e.DataRow.IsNull("客户名称") OrElse e.DataRow.IsNull("提货地点") Then
            e.DataRow("单价") = Nothing
        Else
            Dim psum As Double = e.DataTable.Compute("sum(提油数量)", "_Identify < " & e.DataRow("_Identify") & " and 客户名称 = \'" & e.DataRow("客户名称") & "\' and 提货地点 = \'" & e.DataRow("提货地点") & "\'")
            Dim drs As List(Of DataRow) = DataTables("订单").Select("客户名称 = \'" & e.DataRow("客户名称") & "\' and 提货地点 = \'" & e.DataRow("提货地点") & "\'", "订单日期")
            Dim sum As Double = 0
            For Each dr As DataRow In  drs
                If sum < psum Then
                    sum += psum
                Else
                    e.DataRow("单价") = dr("单价")
                    Exit For
                End If
            Next
        End If
End Select
大哥这段代码 在条件除了客户名称,提油数量还需要加个品种
还有就是图片中那个秦皇岛九三的为什么只有一个行有单价而另一行没有呢
[此贴子已经被作者于2015/10/9 12:16:27编辑过]