以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  子表有数据后不能再修改主表代码怎么写  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=43869)

--  作者:ybc76
--  发布时间:2013/12/17 21:57:00
--  子表有数据后不能再修改主表代码怎么写
问题:有一个主表和一个子表,即是关联表,如果子表上有关联主表上的数据后,不能修改主表内容,代码怎么写,请高手支招?
图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看

--  作者:有点甜
--  发布时间:2013/12/17 22:18:00
--  
 编写子表clmx的datarowadded事件。

If e.DataRow.GetParentRow("clcrk") IsNot Nothing Then
    e.DataRow.GetParentRow("clcrk").Locked = True
End If

--  作者:ybc76
--  发布时间:2013/12/17 22:38:00
--  
没用,没任何反映,仍可修改,我自己写了句,但老是循环,子表有多少行,就要按几次,怎么修改下:
If e.DataCol.Name = "产品编号" Then
    If e.NewValue <>  "产品编号" Then
    For Each dr As DataRow In e.DataRow.GetChildRows("clmx")
   If dr("产品编号") = e.DataRow("产品编号") Then
     MessageBox.show("此产品已有记录,不能删除!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
   e.DataRow.Locked  = True
   e.Cancel = True
     End If
    Next
   End If
End If
图片点击可在新窗口打开查看此主题相关图片如下:2.jpg
图片点击可在新窗口打开查看
子表有3行,我就得按3次确定才关闭这提示窗口!!请帮忙改下代码,谢谢了!
[此贴子已经被作者于2013-12-17 22:55:44编辑过]

--  作者:有点甜
--  发布时间:2013/12/17 22:56:00
--  
 如果按照你的思路,就这样改

If e.DataCol.Name = "产品编号" Then
    If e.DataRow.GetChildRows("clmx").count > 0 Then
        MessageBox.show("此产品已有记录,不能删除!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
        e.DataRow.Locked  = True
        e.Cancel = True
    End If
End If

--  作者:ybc76
--  发布时间:2013/12/17 22:59:00
--  
完美,你的代码简单多了,多学习,努力中!谢谢甜 甜!
--  作者:zhfjjb123
--  发布时间:2014/1/16 1:20:00
--  
以下是引用有点甜在2013-12-17 22:56:00的发言:
 如果按照你的思路,就这样改

If e.DataCol.Name = "产品编号" Then
    If e.DataRow.GetChildRows("clmx").count > 0 Then
        MessageBox.show("此产品已有记录,不能删除!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
        e.DataRow.Locked  = True
        e.Cancel = True
    End If
End If

这段代码添加到哪里啊


--  作者:zhfjjb123
--  发布时间:2014/1/16 1:25:00
--  学习

能上传你的项目看看吗?就看这一小段


--  作者:9EQ98
--  发布时间:2014/1/19 8:07:00
--  
编写子表clmx的datarowadded事件。