Office中国论坛/Access中国论坛

标题: Access挑战Excel第二十二期:级联更新和级联删除 [打印本页]

作者: roych    时间: 2016-5-3 03:01
标题: Access挑战Excel第二十二期:级联更新和级联删除
       之前一直在想,要不要拿级联更新和级联删除来挑战下呢?崇尚自由的Excel没有这两个属性,所以迟迟没出这道题。不过小妖姐姐不屑地说,万能的VBA可以解决。
       我想,这也代表了相当部分Access初学者的想法吧。不过在我看来,有时候VBA并不是解决问题的最佳方案。一味膜拜代码,反而是本末倒置的做法。

       先看看Access是如何解决这个问题的:
       [attach]58924[/attach]       ---------------------------------------------------------------------------------------------------
       看来还是先科普下级联删除和级联更新的效果吧:
      以表tblEmployee中工号SP00031为例,我们先在tblDailyCheck和tblSuggestion表中,可以看到这个工号对应的记录。
[attach]58944[/attach]
[attach]58945[/attach]
      假定现在需要更改这个工号为SC00031,那么级联更新的效果就是,直接在tblEmployee更改过来就好了。
      请打开frmUpdate,选择这个工号,输入新工号,点击确定后就全部更新过来了(请留意子窗体的工号):
[attach]58946[/attach]
       级联删除效果类似,同样地在tblEmployee删除一条记录,这两个表对应的记录也会被删除。
       ---------------------------------------------------------------------------------------------------
       Excel会不会这样解决呢:
       级联更新……WOW,简单,复制工号,然后在整个工作簿中查找,全部替换……?
       级联删除……复制工号,在每个工作表中自动筛选,删除……?
       在工作表较多的情况下,有没有VBA代码不够用的感觉呢?

       视代码为图腾的Access爱好者,也可以用代码来试试。当然,在Access里使用查询可能比Excel简单一丢丢。不过,如果使用ADO则不见得好多少。
------------------------------------------------------



作者: pureshadow    时间: 2016-5-3 13:51
我不过才玩了两天绳结,Roy又不让我玩了……
作者: pureshadow    时间: 2016-5-3 17:17
经过Roy同学私下耐心地解释,我终于明白了。VBA肯定也是能搞定的,通过一个关键词,如员工工号,遍历所有表删除相关记录就好了。
不过,这题我拒绝接受挑战,因为没有现实意义,员工就算离职了,他所有的记录都要留着的,至少留到仲裁期过掉,通常情况下都是永久保留的,怎么可能删掉?
嘿嘿嘿嘿,我郁闷洗你!







欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3