以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  BOM中如何防止子件与父件嵌套(OK)  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=61666)

--  作者:HappyFt
--  发布时间:2014/12/16 21:47:00
--  BOM中如何防止子件与父件嵌套(OK)

 


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

 

在表的事件datacolchanging中写了代码,但是不能检查出来,即先把第5行的父件编码修改成其他的,再改回A时应该提示有嵌套才可以。要怎么修改代码才可以?谢谢!


 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:bom嵌套检查.table

[此贴子已经被作者于2014-12-17 23:38:19编辑过]

--  作者:有点甜
--  发布时间:2014/12/16 22:07:00
--  

Datacolchanged事件

 

\'检查子件与父件是否嵌套
Select e.DataCol.name
    Case "产品编码","父件编码"
        If e.DataRow.IsNull("产品编码") = False AndAlso e.DataRow.IsNull("父件编码") = False Then
            Dim pdr As DataRow = e.DataRow
            Do While pdr IsNot Nothing
                pdr = e.DataTable.Find("父件编码 = \'" & pdr("产品编码") & "\'")
                If pdr IsNot Nothing Then
                    If pdr("产品编码") = e.DataRow("父件编码") Then
                        msgbox("嵌套")
                        e.DataRow("父件编码") = Nothing
                    End If
                End If
            Loop
        End If
End Select


--  作者:HappyFt
--  发布时间:2014/12/16 22:11:00
--  

谢谢甜老师,可以了,但是不能写在datacolchanging事件吗?有什么不同


--  作者:有点甜
--  发布时间:2014/12/16 22:15:00
--  

 写在datacolchanging,就不能直接用 e.DataRow("父件编码"),要用 e.NewValue

 

 因为是两列,所以要分开写代码。


--  作者:HappyFt
--  发布时间:2014/12/17 21:40:00
--  


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

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:bom嵌套检查.table

 

如上图,当bom中的每个父件有两个以上子件时,原来表中datacolchanged中的代码就检查不出嵌套来。导致生成目录树死循环。删除第6行就可以正确生成目录树。

另外一个问题,为什么我的是永久开发版,这样出错后还是显示foxtable的图标出来呢?


--  作者:HappyFt
--  发布时间:2014/12/17 21:54:00
--  

第二个问题纠正,发布的程序运行出错是出现通用数据管理平台,不是foxtable,这时没有foxtable的痕迹


--  作者:有点甜
--  发布时间:2014/12/17 22:27:00
--  
   
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:bom嵌套检查.table


--  作者:HappyFt
--  发布时间:2014/12/17 23:38:00
--  
谢谢甜老师,反复测试。好象可以了。