以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [原创]采购系统设计问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=137937)

--  作者:seal51
--  发布时间:2019/7/18 17:05:00
--  [原创]采购系统设计问题
在采购系统里, 采购, 付款, 库存的关系是如何设计的, 是各自独立的模块,还是你中有我, 我中有你的, 哪位能提供一下设计思路?典型的经销存里是如何做的呢?
--  作者:seal51
--  发布时间:2019/7/19 10:13:00
--  
采购系统中应付账款如何设计, 建立一个应付账款表吗?数据从何而来, 从采购明细表里导入吗?
然后在建立一个付款单和付款明细单吗?

--  作者:有点蓝
--  发布时间:2019/7/19 10:15:00
--  
业务的东西我不懂。到群里问问,q群:123865097
--  作者:seal51
--  发布时间:2019/7/20 8:54:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:应付111.jpg
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2019/7/20 9:00:00
--  
直接对关联的明细表进行汇总,参考:


--  作者:seal51
--  发布时间:2019/7/20 10:04:00
--  

然后在该表的DataColChanged事件 中设置如下代码:

If e.DataCol.Name = "产品" Then 
    e.DataRow("数量") = DataTables("订单").Compute("Sum(数量)","[产品] = \'" & e.NewValue & "\'")
End
 
If

请在统计表设置好上述代码后,重置一次该表的产品列。

现在要求在订单表输入或修改某订单的数量后,能够即时更新统计表对应产品的数量统计值。

为此可将订单表的DataColChanged事件代码设置为:

If e.DataCol.Name = "数量" Then
    Dim pr As DataRow
    pr = 
DataTables("统计").Find("产品 = \'" & e.DataRow("产品") & "\'")
    If
 pr IsNot Nothing 
Then
        pr(
"数量")= pr("数量") + e.NewValue - e.OldValue
    End
 
If
End
 If

代码的原理很简单,修改某订单的数量后,上面的代码会在统计表找出对应的产品,然后将该产品的数量累计值加上此订单的新数量值,并减去此订单的原数量值,得到该产品最新的销售数量。


--  作者:seal51
--  发布时间:2019/7/20 10:05:00
--  
是不是两个表都要写? 第一次成功, 然后删除, 然后代码就没有反应了


--  作者:seal51
--  发布时间:2019/7/20 10:08:00
--  
If e.DataCol.Name = "PDID" Then 
    e.DataRow("付款金额") = DataTables("付款明细单").Compute("Sum(付款金额)","[PDID] = \'" & e.NewValue & "\'")
End If

If e.DataCol.Name = "付款金额" Then
    Dim pr As DataRow
    pr = DataTables("应付账款表").Find("PDID = \'" & e.DataRow("PDID") & "\'")
    If pr IsNot Nothing Then
        pr("付款金额")= pr("付款金额") + e.NewValue - e.OldValue
    End If
End If

--  作者:有点蓝
--  发布时间:2019/7/20 10:49:00
--  
不会就上传实例
--  作者:seal51
--  发布时间:2019/7/20 11:35:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:应付2019-07-20.foxdb