以文本方式查看主题

-  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=62471)

--  作者:rophy0952
--  发布时间:2015/1/2 11:49:00
--  [求助]这样的结果如何实现?
有三个表,分切工票信息、成品检验记录表、核数表。
希望在核数表“不良品_只数”值变化的时候,将成品检验记录表中的“不良项目_只数”按照“不良项目_班组”进行合计到分切工票信息表中对应的“不良只数”中。(之前是在成品检验记录表字段值变化的时候进行赋值,因两个表有时录入顺序经常颠倒,所以经常无法值赋到分切工票信息表中去。)为改变现状,欲做此改变。
之前成品检验记录表中的代码为:
Select Case e.DataCol.Name
    Case "不良项目1_只数","不良项目2_只数","不良项目3_只数","不良项目4_只数","不良项目5_只数","不良项目6_只数","不良项目7_只数","不良项目8_只数","不良项目9_只数","不良项目10_只数"
        Dim dr1 As DataRow
        Dim bz As String = e.DataCol.Name.Replace("只数","班组")
        dr1 = DataTables("分切工票信息").SQLFind("[流水号] = \'" & e.DataRow("流水号") & "\' And 分切班组 = \'" & e.DataRow(bz) & "\'")
        If dr1 IsNot Nothing Then
            Dim n As Double
            For Each sdr As DataRow In e.DataTable.Select("流水号=\'" & e.DataRow("流水号") & "\'")
                For i As Integer = 1 To 10
                    If sdr("不良项目" & i & "_责任").Contains("分切") AndAlso sdr("不良项目" & i & "_班组") = e.DataRow(bz) Then
                        n = n + sdr("不良项目" & i & "_只数")
                    End If
                Next
            Next
            dr1("不良只数") = n
            dr1.Save
        End If
End Select
请问如果是在核数表字段的值改变时,该如何写代码?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:问题.foxdb



--  作者:狐狸爸爸
--  发布时间:2015/1/4 10:35:00
--  

一般来说,表A写了计算代码,如果表B的数据变化会影响表A的计算结果,可以在表B写代码,找出表A对应的行,然后用RaiseDataColChanged强行触发表A的DataColChanged时间,表B的代码类似:

 

Select Case e.DataCol.Name
    Case
"数量","单价","折扣"
       
Dim pr As DataRow
        pr =
DataTables("统计").Find("产品 = \'" & e.DataRow("产品") & "\'")
        If
pr IsNot Nothing Then
            DataTables
("统计").DataCols("产品").RaiseDataColChanged(pr)
        End
If
End
Select

 

你可以看一下这个:

http://www.foxtable.com/help/topics/1453.htm

http://www.foxtable.com/help/topics/1472.htm

 

有问题再说话。