Foxtable(狐表)用户栏目专家坐堂 → [求助]级联删除


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

主题:[求助]级联删除

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


加好友 发短信
等级:九尾狐 帖子:2199 积分:18081 威望:0 精华:0 注册:2011/11/26 20:21:00
[求助]级联删除  发帖心情 Post By:2017/2/6 14:29:00 [只看该作者]

现在有表A和表B,表A的ID与表B的AID是关联的
要求表A增加行时,自动往表B中增加行,且表B的AID = 表A的行的ID

表B中自动增加的行不允许直接删除。
但表A中的行删除时,表B中的自动增加的行可以级联删除。


表A的datacolchanged事件:
select case e.datacol.name
    case "Code"
         dim dr as datarow = datatables("B").find("AID = '" & e.datarow("ID") & "'")
         if dr is nothing then 
               dim ar as datarow = datatables("B").addnew
               ar("AID") = e.datarow("ID")
               ar("Auto") = true  '这是用来标记是否自动增加的
         end if 
end select 


表B的BeforeDeleteDataRow事件
if e.datarow("Auto") = true then 
     e.cancel = true
end if 

但是结果不是我想的这样,实际情况是:
1、表A中的行删除了,但表B中的行并没有级联删除。
2、如果把表B的BeforeDeleteDataRow事件去掉,表A和表B可以做到级联删除,但没有实现表B中自动增加的行不能主动删除的本意。


如何修改呢?
[此贴子已经被作者于2017/2/6 14:30:13编辑过]

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/2/6 14:35:00 [只看该作者]

 级联删除的功能不要勾选。自己做。

 

 在表a的BeforeDeleteDataRow或者DataRowDeleting事件,同时把表B的数据删除不就行了?


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


加好友 发短信
等级:九尾狐 帖子:2199 积分:18081 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2017/2/6 14:47:00 [只看该作者]

我希望做的就是表A中删除,表B就可以级联删除。如果级联删除不要勾选,那就只能手工写了哟。

而且如果在表A中BeforeDeleteDataRow写上代码:
datatables("B").deletefor("AID = '" & e.datarow("ID") & "'")
执行时报错:
该行不属于与此关系相同的 DataSet。
这是几个意思?

但是直接在表B中执行删除操作时,自动增加的行不允许删除。

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/2/6 14:49:00 [只看该作者]

不要勾选级联删除。

 回到顶部