以文本方式查看主题

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

--  作者:xiaoyuylx
--  发布时间:2015/11/24 10:36:00
--  菜鸟再一次请教高手

子表关联列新增一个名称,如何在父表中自动新增一个


--  作者:大红袍
--  发布时间:2015/11/24 10:58:00
--  

DataColChanged事件

 

If e.DataCol.name = "第一列" Then
    If e.DataRow.Isnull("第一列") = False Then
        Dim fdr As DataRow = DataTables("表B").Find("第一列 = \'" & e.DataRow("第一列") & "\'")
        If fdr Is Nothing Then
            fdr =  DataTables("表B").AddNew
            fdr("第一列") = e.DataRow("第一列")
        End If
    End If
End If


--  作者:xiaoyuylx
--  发布时间:2015/11/24 16:09:00
--  

可是我发现子表新增的那行编辑好后,父表增加了好行,大师,这该怎么改正啊


--  作者:大红袍
--  发布时间:2015/11/24 16:45:00
--  
 关联列如果重复修改,就肯定会添加很多行。但如果把修改的行删除也是矛盾的。你好好理一下你的逻辑。
--  作者:xiaoyuylx
--  发布时间:2015/11/24 16:59:00
--  

大师,我大概知道是怎么回事了,还记得

 

Select e.DataCol.Name

 

    Case "库位", "牌号", "包装规格"

        e.DataRow("序号") = e.DataRow("库位") + e.DataRow("牌号") + e.DataRow("包装规格")

 

End Select

 

这个事件么,而我关联的那列就是序号列,在编辑过程中,序号一共改变了三次,所以父表增加了三行


--  作者:大红袍
--  发布时间:2015/11/24 17:08:00
--  
If e.DataCol.name = "序号" Then
    If e.DataRow.isnull("库位")=false andalso e.DataRow.isnull("牌号")=false andalso e.DataRow.isnull("包装规格")=false then
        Dim fdr As DataRow = DataTables("表B").Find("序号 = \'" & e.DataRow("序号") & "\'")
        If fdr Is Nothing Then
            fdr =  DataTables("表B").AddNew
            fdr("序号") = e.DataRow("序号")
        End If
    End If
End If