以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]级联删除 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=95823) |
-- 作者:chnfo -- 发布时间: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编辑过]
|
-- 作者:有点色 -- 发布时间:2017/2/6 14:35:00 -- 级联删除的功能不要勾选。自己做。
在表a的BeforeDeleteDataRow或者DataRowDeleting事件,同时把表B的数据删除不就行了? |
-- 作者:chnfo -- 发布时间:2017/2/6 14:47:00 -- 我希望做的就是表A中删除,表B就可以级联删除。如果级联删除不要勾选,那就只能手工写了哟。 而且如果在表A中BeforeDeleteDataRow写上代码: datatables("B").deletefor("AID = \'" & e.datarow("ID") & "\'") 执行时报错: 该行不属于与此关系相同的 DataSet。 这是几个意思?
但是直接在表B中执行删除操作时,自动增加的行不允许删除。 |
-- 作者:有点色 -- 发布时间:2017/2/6 14:49:00 -- 不要勾选级联删除。 |