以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助] 合理分配数量  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=164267)

--  作者:sanny
--  发布时间:2021/5/2 20:40:00
--  [求助] 合理分配数量
老师,

可否帮忙将表B中的数量以出货日期合理分配到表A的出货日期备注列中。结果如附件。三十分感谢。



 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:分配数量.foxdb





--  作者:y2287958
--  发布时间:2021/5/2 21:26:00
--  
分配规则呢

[此贴子已经被作者于2021/5/2 21:29:03编辑过]

--  作者:sanny
--  发布时间:2021/5/3 12:55:00
--  
如表A中出货日期备注 : 把表B中的数量根据出货日期分配到表A中相应的产品中,每笔记录的数量不超过表A中的数量
--  作者:有点蓝
--  发布时间:2021/5/6 16:16:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:分配数量.zip


--  作者:sanny
--  发布时间:2021/5/6 22:03:00
--  
老师,如何改成窗口中的按钮代码?谢谢。


Select Case e.DataCol.Name
    Case "产品名称","数量"
        Dim con As Integer = e.DataTable.Compute("sum(数量)","产品名称=\'" & e.DataRow("产品名称") & "\' and _sortkey < " & e.DataRow("_sortkey"))
        Dim s As String
        Dim drs As List(Of  DataRow) = DataTables("表B").Select("产品名称= \'" & e.DataRow("产品名称") & "\'","出货日期")
        Dim dr As DataRow
        Dim sl As Integer = e.DataRow("数量")
        Do While drs.Count > 0
            dr = drs(0)
            If con >= dr("数量") Then
                con = con - dr("数量")
            Else
                Dim c1 As Integer = dr("数量") - con
                con = 0
                If s > "" Then s = s & " + "
                If c1 >= sl Then
                    s = s & dr("出货日期") & " /" & sl & "pc" & IIF(s.Contains("+"),"s","")
                    Exit Do
                Else
                    s = s & dr("出货日期") & " /" & c1 & "pcs"
                    sl = sl - c1
                End If
            End If
            drs.RemoveAt(0)
        Loop
        e.DataRow("出货日期备注") = s
End Select

--  作者:有点蓝
--  发布时间:2021/5/6 22:15:00
--  
e.DataRow改为使用current
e.DataTable改为使用DataTables("xx表")

--  作者:sanny
--  发布时间:2021/5/7 22:40:00
--  
老师,放不进去,附上文件 ,谢谢。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:分配数量.foxdb


--  作者:有点蓝
--  发布时间:2021/5/8 8:59:00
--  
把您改过的代码发上来