Foxtable(狐表)用户栏目专家坐堂 → 子表有数据后不能再修改主表代码怎么写


  共有4372人关注过本帖树形打印复制链接

主题:子表有数据后不能再修改主表代码怎么写

帅哥哟,离线,有人找我吗?
ybc76
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:136 积分:1090 威望:0 精华:0 注册:2011/12/18 14:29:00
子表有数据后不能再修改主表代码怎么写  发帖心情 Post By:2013/12/17 21:57:00 [只看该作者]

问题:有一个主表和一个子表,即是关联表,如果子表上有关联主表上的数据后,不能修改主表内容,代码怎么写,请高手支招?
图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:136 积分:1090 威望:0 精华:0 注册:2011/12/18 14:29:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:136 积分:1090 威望:0 精华:0 注册:2011/12/18 14:29:00
  发帖心情 Post By:2013/12/17 22:59:00 [只看该作者]

完美,你的代码简单多了,多学习,努力中!谢谢甜 甜!

 回到顶部
帅哥哟,离线,有人找我吗?
zhfjjb123
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:120 积分:1415 威望:0 精华:0 注册:2012/10/19 16:24:00
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:120 积分:1415 威望:0 精华:0 注册:2012/10/19 16:24:00
学习  发帖心情 Post By:2014/1/16 1:25:00 [只看该作者]

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


 回到顶部
帅哥哟,离线,有人找我吗?
9EQ98
  8楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:480 积分:4371 威望:0 精华:0 注册:2014/1/16 16:55:00
  发帖心情 Post By:2014/1/19 8:07:00 [只看该作者]

编写子表clmx的datarowadded事件。

 回到顶部