以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]表A逻辑列打勾,关联表B不可编辑  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=61553)

--  作者:ZHX88863808
--  发布时间:2014/12/14 21:08:00
--  [求助]表A逻辑列打勾,关联表B不可编辑
主表A和子表B关联,表A中有逻辑列X,逻辑列X打勾后,子表B相关联的内容相将不允许再编辑,请前辈老师帮忙写个代码,谢谢!
--  作者:有点甜
--  发布时间:2014/12/14 21:11:00
--  

 PrepareEdit事件,简单一点,可以引用父表的逻辑列,这样就不需要find函数

 

If e.Col.Name = "关联列" AndAlso e.Row("逻辑列") = True Then

    e.Cancel = True

End If


--  作者:ZHX88863808
--  发布时间:2014/12/14 21:28:00
--  

老师试了一下没有成功,我把项目上传,请帮我看一看,谢谢!

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:表a逻辑列打勾,关联表b不可编辑.table


--  作者:ZHX88863808
--  发布时间:2014/12/14 21:32:00
--  
老师:上面项目我希望表A逻辑列打勾后,表B相关内容不好编辑(即不好增加行等),但子表C还可以编辑。
--  作者:有点甜
--  发布时间:2014/12/14 21:37:00
--  

表B的prepareEdit事件

 

If e.Col.Name = "A" OrElse e.Col.name = "B" Then
    Dim fdr As DataRow = e.Row.DataRow.GetParentRow("表A")
    If fdr IsNot Nothing AndAlso fdr("X") = True Then
        e.Cancel = True
    End If
End If


--  作者:ZHX88863808
--  发布时间:2014/12/14 21:49:00
--  

老师:如果逻辑列打勾后,表B不允许增加行,那代码又怎么写呢?


--  作者:有点甜
--  发布时间:2014/12/14 21:55:00
--  

datarowAdded事件

 

Dim fdr As DataRow = e.DataRow.GetParentRow("表A")
If fdr IsNot Nothing AndAlso fdr("X") = True Then
    If e.DataRow("A") = fdr("A") AndAlso e.DataRow("B") = fdr("B") Then
        e.DataRow.Delete
    End If
End If

 

datacochanged事件

 

If e.DataCol.Name = "A" OrElse e.DataCol.Name = "B" Then
    Dim fdr As DataRow = e.DataRow.GetParentRow("表A")
    If fdr IsNot Nothing AndAlso fdr("X") = True Then
        If e.DataRow("A") = fdr("A") AndAlso e.DataRow("B") = fdr("B") Then
            e.DataRow.Delete
        End If
    End If
End If


--  作者:ZHX88863808
--  发布时间:2014/12/14 22:03:00
--  
老师:上面两个代码都要用吗?
--  作者:有点甜
--  发布时间:2014/12/14 22:05:00
--  
 是的,在表B。
--  作者:ZHX88863808
--  发布时间:2014/12/14 22:08:00
--  
谢谢老师!