以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]主表的数值如何合理分配给子表  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=30797)

--  作者:琼息
--  发布时间:2013/4/3 16:58:00
--  [求助]主表的数值如何合理分配给子表
做收款单的时候,当我在主表“收款总额”输入8000的时候,怎样自动分配给子表中的“已收金额”列,使得第一列是2000,第二列是3000,第四列是2000,第五列是0.
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目4.table


--  作者:琼息
--  发布时间:2013/4/3 17:03:00
--  
不是的啊,没有收的的1000下次收
--  作者:琼息
--  发布时间:2013/4/3 17:06:00
--  
我想这个可以看作是统计子表数据的逆过程
--  作者:琼息
--  发布时间:2013/4/3 17:20:00
--  
可能是我讲的不够清楚吧,是这样子的,当我的收款时候,我要根据我收的钱数来抵消我应收款的钱数。比如,我应收款有很多个单,但这些单都是同一个客户的,我向这个客户收钱的时候,这个客户给钱我之后,逐步把应收款的单抵消掉,直到把这些钱数抵消完。当收的钱刚刚好的时候,这个客户的应收款的单就没有,当收的钱不够的时候,最后的应收款单没有收足够的钱,留在下次收。
--  作者:琼息
--  发布时间:2013/4/3 17:53:00
--  
嗯嗯,收到了,辛苦你啦
--  作者:don
--  发布时间:2013/4/3 18:03:00
--  
加个提示功能:

\'\'\'
If e.DataCol.Name = "收款总额"  Then
    Dim T As String
    Dim mny,sum As Double
    Dim Dt1 As DataTable = DataTables("收款明细")
    mny = e.DataRow("收款总额")
    If mny <=0 Then
        MessageBox.Show("请输入金额!", "提示")
    ElseIf  e.DataRow.Isnull("收款单编号") = False Then
        T = "[收款单编号] = \'" & e.DataRow("收款单编号") & "\'"
        If dt1.Find(T) IsNot Nothing Then
            sum = dt1.Compute("Sum(应收金额)",T)
            If mny > sum Then
                MessageBox.Show("付款金额超出应收金额:" & (mny-sum) &"!", "温馨提示")
                Return
            End If

            For Each dr As DataRow In dt1.Select(T)
                If mny <=0 Then
                    Exit For
                Else
                    If  mny >= dr("应收金额")
                        dr("已收金额") = dr("应收金额")
                    Else
                        dr("已收金额") = mny
                    End If
                    mny =mny- dr("应收金额")
                End If
            Next
        End If
    End If
End If

--  作者:tommyfung
--  发布时间:2013/5/3 15:52:00
--  

Select Case e.DataCol.Name
    Case "ASSIGN_QTY"
        Dim zwh As String = Forms("备料单分配").Controls("备料单分配ComboBox2").value
        Dim zitem As String = Forms("备料单分配").Controls("备料单分配Label5").text
        Dim zqty As Double = Val(Forms("备料单分配").Controls("备料单分配Label4").text)

        If e.DataRow("POSTED")= False And e.DataRow("Item_No")=zitem Then
            Dim Dt1 As DataTable = DataTables("PRWIRD")
            Dim ftr As String = "Item_no = \'"& zitem &"\'"
            For Each dr As DataRow In Dt1.Select(ftr)
\'      Messagebox.show("WH :" & zwh & " ITEM :" & zitem & " zQty :" &zqty & chr(13) &" -> Remain :" & dr("REMAIN_QTY") & "-> ASS:" & dr("ASSIGN_QTY"))
                If zqty >  dr("REMAIN_QTY") Then
                    dr("ASSIGN_QTY") = dr("REMAIN_QTY")
                    zqty = zqty - dr("ASSIGN_QTY")
      messagebox.show(">remain ASS="&dr("ASSIGN_QTY")& " zqty="&zqty)
                Else
                    If zqty < 0 Then
      messagebox.show("zqty < 0 (EXIT) :" &zqty)
                        Exit For
                    Else
      Messagebox.show("ASS=Zqty :" &zqty)
                    dr("ASSIGN_QTY") = zqty
                    zqty = zqty - zqty
                    End If
                End If
            Next
\'            e.DataRow("POSTED").VALUE = True
            messagebox.show(zitem & " 分配完成 ! 余:" &zqty)
            Return
        End If

End Select

 

请帮忙看看为何分配后不写入表里及不在 Table1里显示出来


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20130503154746.jpg
图片点击可在新窗口打开查看