以文本方式查看主题

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

--  作者:实话实说
--  发布时间:2017/4/25 16:59:00
--  非关联验证

不想建立表的关联,想要以下结果

1、如果表B有对应的产品用料,(所有材料的用料)则勾选[标识];

2、如果在表B编辑和新增产品的用料,则勾选表A的[标识]

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


--  作者:有点色
--  发布时间:2017/4/25 17:30:00
--  

 参考

 

http://www.foxtable.com/webhelp/scr/1453.htm

 


--  作者:有点色
--  发布时间:2017/4/25 17:36:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:非关联.foxdb


--  作者:实话实说
--  发布时间:2017/4/25 17:43:00
--  
能贴出代码吗,我还没有升级
--  作者:有点色
--  发布时间:2017/4/25 17:44:00
--  
 

表A_DataColChanged

 

Select Case e.DataCol.name

    Case "产品型号","产品规格"

        Dim fdr As DataRow = DataTables("表b").find("产品型号=\'" & e.DataRow("产品型号") & "\' and 产品规格=\'" & e.DataRow("产品规格") & "\'")

        If fdr IsNot Nothing Then

            e.DataRow("标识") = True

        Else

            e.DataRow("标识") = False

        End If

End Select

 

表B_DataColChanged

 

If e.DataCol.name = "产品型号" Then

    DataTables("表a").DataCols("产品型号").RaiseDataColChanged("产品型号=\'" & e.oldvalue & "\' and 产品规格=\'" & e.DataRow("产品规格") & "\'")

    DataTables("表a").DataCols("产品型号").RaiseDataColChanged("产品型号=\'" & e.DataRow("产品型号") & "\' and 产品规格=\'" & e.DataRow("产品规格") & "\'")

End If

If e.DataCol.name = "产品规格" Then

    DataTables("表a").DataCols("产品型号").RaiseDataColChanged("产品型号=\'" & e.DataRow("产品型号") & "\' and 产品规格=\'" & e.OldValue & "\'")

    DataTables("表a").DataCols("产品型号").RaiseDataColChanged("产品型号=\'" & e.DataRow("产品型号") & "\' and 产品规格=\'" & e.DataRow("产品规格") & "\'")

End If


--  作者:实话实说
--  发布时间:2017/4/25 18:04:00
--  

验证后问题:

1、表B每个产品有两行,必须都有数据才能勾选,删除任一行数据都勾选不了或去掉勾选


--  作者:有点色
--  发布时间:2017/4/25 18:07:00
--  
 不明白你的问题。如何知道表A的数据对应两行还是三行还是四行?
--  作者:实话实说
--  发布时间:2017/4/25 18:14:00
--  
表A与表B实际是一对多(表A是一,表B是多)
--  作者:实话实说
--  发布时间:2017/4/25 18:15:00
--  
只有表B的用料都有数据(对应产品)才能在表A勾选
--  作者:有点色
--  发布时间:2017/4/25 18:20:00
--  
以下是引用实话实说在2017/4/25 18:15:00的发言:
只有表B的用料都有数据(对应产品)才能在表A勾选

 

Select Case e.DataCol.name

    Case "产品型号","产品规格"

        Dim fdr As DataRow = DataTables("表b").find("产品型号=\'" & e.DataRow("产品型号") & "\' and 产品规格=\'" & e.DataRow("产品规格") & "\'")

        If fdr IsNot Nothing Then

            e.DataRow("标识") = True

        Else

            e.DataRow("标识") = False

        End If

End Select

 

表B_DataColChanged

 

If e.DataCol.name = "产品型号" Then

    DataTables("表a").DataCols("产品型号").RaiseDataColChanged("产品型号=\'" & e.oldvalue & "\' and 产品规格=\'" & e.DataRow("产品规格") & "\' and 用料 > 0")

    DataTables("表a").DataCols("产品型号").RaiseDataColChanged("产品型号=\'" & e.DataRow("产品型号") & "\' and 产品规格=\'" & e.DataRow("产品规格") & "\' and 用料 > 0")

End If

If e.DataCol.name = "产品规格" Then

    DataTables("表a").DataCols("产品型号").RaiseDataColChanged("产品型号=\'" & e.DataRow("产品型号") & "\' and 产品规格=\'" & e.OldValue & "\'")

    DataTables("表a").DataCols("产品型号").RaiseDataColChanged("产品型号=\'" & e.DataRow("产品型号") & "\' and 产品规格=\'" & e.DataRow("产品规格") & "\'")

End If

If e.DataCol.name = "用料" Then

    DataTables("表a").DataCols("产品型号").RaiseDataColChanged("产品型号=\'" & e.DataRow("产品型号") & "\' and 产品规格=\'" & e.DataRow("产品规格") & "\'")

End If