以文本方式查看主题

-  易表在线答疑  (http://www.egrid2000.com/dvbbs/index.asp)
--  精华分享  (http://www.egrid2000.com/dvbbs/list.asp?boardid=12)
----  如何自动删除关联表的空白行(小吴原创)  (http://www.egrid2000.com/dvbbs/dispbbs.asp?boardid=12&id=1006)

--  作者:喜爱易表
--  发布时间:2006/8/16 19:15:00
--  如何自动删除关联表的空白行(小吴原创)
(本技巧原创人:喜爱易表)

  表间关联是绝大多数用户在做数据库的时候肯定要用到的功能,例如在订单管理系统中,通常包括客户、产品、定单三个表,其中每个订单都对应着一个客户和一个产品,如果我们能够在客户与订单、产品与订单之间建立某种关联,那么相互之间可以互相引用和定位,例如订单可以引用产品表中的单价数据来计算金额,而选择某一个产品或某一个客户,也可以快速找到所有对应的订单。

  不过,有时会遇到主表里的某条记录在子表中的关联记录会有空白记录的情况,出现这种情况通常是由于录入数据的用户不慎多添加了一行关联记录等……

  那么,作为管理员,有没有办法让易表自动删除主表里的记录的空白关联子记录呢?其实,我们可以利用DelFor函数来实现。

  请看这个例子:

egd文件下载


 工作原理解析:

  ● 表1和表2的第一列进行关联;
  ● 表1设置行预处理公式:DelFor("表2","第二列","=",""),该公式的含义是——删除表2中第二列为空的记录;
  ● 由于该公式被设置为表1的行预处理公式,那么触发这个公式执行的条件就是焦点(光标)一定位到表1中的某一行,就会删除表2中所有第二列为空的记录,这样一来,也就实现了自动删除关联表的空白行;

  编后话:
  其实,聪明的用户一定明白,这个公式实际上执行一次就够了,有人会问,为什么不能把这个公式作为表2的行预处理公式呢?
  呵呵,那你就试试看吧,你会发现你在表2中根本无法添加行,因为一添加行,其第二列是空白的,光标一到新增的行就会删除这一行,所以,看起来你根本无法在表2中添加行。

  这个例子只是最简单的。其实,只要善用DelFor函数的参数,在结合IF等函数,将会有更大的灵活性,这里就不赘述了!