以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]datacolchange里面没法定义控件  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=78663)

--  作者:huhu
--  发布时间:2015/12/14 16:42:00
--  [求助]datacolchange里面没法定义控件
我想在配货整理窗口勾线确定,右下角能自动统计出配货筛选明细表数量列求和的值。

想直接在datacolchange里面写代码,又没法直接定义控件。

有啥办法可以实现上面的要求?


图片点击可在新窗口打开查看此主题相关图片如下:控件.png
图片点击可在新窗口打开查看


--  作者:大红袍
--  发布时间:2015/12/14 16:44:00
--  

谁说不能

 

If Forms("窗口1").Opened Then

    Forms("窗口1").Controls("Label1").Text = "123"

End If


--  作者:大红袍
--  发布时间:2015/12/14 16:44:00
--  

你也可以在窗口的timertick事件,写统计的代码。


--  作者:huhu
--  发布时间:2015/12/14 17:01:00
--  
Dim sum1,sum2 As Integer
If e.DataCol.name = "确定" Then
    If e.DataRow("确定") = True Then
        Dim dr As DataRow
        dr = DataTables("库存明细表").find ("物料编码 = \'" & e.DataRow("物料编码") & "\' and 库位编码 = \'" & e.DataRow("库位编码") & "\' And 提示 = \'入库完成\'","SN")
        If dr IsNot Nothing Then
            For i As Integer = 1 To e.DataRow("预配货数量")
                Dim ndr As DataRow = DataTables("配货筛选明细表").AddNew()
                ndr("SN") = dr("SN")
                ndr("物料编码") = dr("物料编码")
                ndr("库位号") = dr("库位号")
                ndr("库位编码") = dr("库位编码")
                ndr("数量") = dr("数量")
                ndr("标志") = e.DataRow("_Identify")
            Next
            
            sum1 = sum1 + DataTables("配货筛选明细表").Compute("count([SN])","物料编码 = \'" & e.DataRow("物料编码") & "\' and 标志 = \'" & e.DataRow("_Identify") & "\'")
            If Forms("配货整理").Opened Then
                Forms("配货整理").Controls("实配货数量").Text = sum1
            End If
        End If
    Else
        Dim drs As List(Of DataRow) = DataTables("配货筛选明细表").Select("物料编码 = \'" & e.DataRow("物料编码") & "\' and 标志 = \'" & e.DataRow("_Identify") & "\'")
        For i As Integer = drs.count - 1 To 0 Step -1
            drs(i).delete
        Next

        sum2 = DataTables("配货筛选明细表").Compute("count([SN])","物料编码 = \'" & e.DataRow("物料编码") & "\' and 标志 = \'" & e.DataRow("_Identify") & "\'")
        If Forms("配货整理").Opened Then
            Forms("配货整理").Controls("实配货数量").Text = sum1 - sum2
        End If
    End If
End If

这样统计不对吗?

--  作者:大红袍
--  发布时间:2015/12/14 17:06:00
--  

条件有错吧?

 

sum1 = DataTables("配货筛选明细表").Compute("count([SN])","物料编码 = \'" & e.DataRow("物料编码") & "\'")


--  作者:huhu
--  发布时间:2015/12/14 17:09:00
--  
同样的物料编码在配货筛选明细表也有啊。总不能把所有的物料编码都统计进去。
只统计这一次的。

--  作者:huhu
--  发布时间:2015/12/14 17:15:00
--  
应该这么理解,勾选第一行的确定时,根据条件物料编码 = \'" & e.DataRow("物料编码") & "\' and 标志 = \'" & e.DataRow("_Identify") & "\'统计出sum1数量2,显示也是2.
勾选第二行的确定时,根据条件物料编码 = \'" & e.DataRow("物料编码") & "\' and 标志 = \'" & e.DataRow("_Identify") & "\'统计出sum2数量1,显示sum应该为sum1+sum2显示为3才对。
如果去掉确定勾时,显示sum应该为sum1-sum2显示为1才对。

就是这样。


--  作者:大红袍
--  发布时间:2015/12/14 17:16:00
--  
那代码直接compute就行啊,不用加减啊
--  作者:huhu
--  发布时间:2015/12/14 17:19:00
--  
应该这么理解,勾选第一行的确定时,根据条件物料编码 = \'" & e.DataRow("物料编码") & "\' and 标志 = \'" & e.DataRow("_Identify") & "\'统计出sum1数量2,显示也是2.
勾选第二行的确定时,根据条件物料编码 = \'" & e.DataRow("物料编码") & "\' and 标志 = \'" & e.DataRow("_Identify") & "\'统计出sum2数量1,显示sum应该为sum1+sum2显示为3才对。
如果去掉确定勾时,显示sum应该为sum1-sum2显示为1才对。

就是这样。

--  作者:大红袍
--  发布时间:2015/12/14 17:35:00
--  

1、打开窗口记录全部的值sum

 

2、计算所有的值,减去sum,就是窗口打开以后变化的值。