以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]DataRowDeleting事件问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=37239)

--  作者:xu3180497
--  发布时间:2013/7/3 12:53:00
--  [求助]DataRowDeleting事件问题

现在有两张表:设备运行表和设备运行说明表。设备运行表是父表,设备运行说明表是字表。它们之间关联的有两个字段,设备编号和统计年份。

设备运行表还有统计月份列,设备运行说明表只有年份没有月份。也就是说设备运行表一年的数据是十二行对应设备运行说明表一行数据。

结构如下图:

设备运行表


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20130703124610.png
图片点击可在新窗口打开查看

设备运行说明表(红色框表示对应设备运行表的数据):


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20130703124640.png
图片点击可在新窗口打开查看
现在问题就是如何在设备运行表的DataRowDeleting事件中实现删除最后一个与设备运行说明表记录关联的数据的时候自动删除设备运行说明表中的关联行。也就是说在删除2013年最后一个月份(12月)的设备运行表的数据的时候才删除设备运行说明表的2013年这条数据(当然是同一设备编号的)。

 

注:不是下面这个(下面这个是父表有一条数据,子表多条数据。我的例子正好是相反的(父表多条数据,子表一条数据。))


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20130703125121.png
图片点击可在新窗口打开查看


 

求指教!!!!


--  作者:e-png
--  发布时间:2013/7/3 13:26:00
--  

不是一样吗, 到过来计算上表的行数,决定是否删除下表的记录。


--  作者:xu3180497
--  发布时间:2013/7/3 13:33:00
--  
呵呵,好像没你想象的那么简单呢,你要不改下代码我试试?
--  作者:Bin
--  发布时间:2013/7/3 14:11:00
--  

Dim pr As DataRow = e.DataRow.GetParentRow("设备运行"\'

If pr IsNot  Nothing Then \'

     If pr.GetChildRows("设备运行说明").count  = 1 Then 

           pr.Delete \'

     End If

End If


如果不行,就上例子.


--  作者:xu3180497
--  发布时间:2013/7/3 14:21:00
--  

你这写的跟那个帮助的例子是一样的,我这个和那个不一样,帮助的例子是父表(订单表)一条记录对应子表(订单明细表)多条记录。

我的例子是父表(设备运行表)多条记录对应子表(设备运行说明表)一条记录。而且我是在删除父表时去触发这个事件,帮助的例子是在删除子表的时候触发这个事件。

按照你给的那样写是不行的。


--  作者:Bin
--  发布时间:2013/7/3 14:22:00
--  
你好,你这样的表设计不科学,哪里有翻过来做,  一个儿子 多个爸爸的.  只有一个爸爸 多个儿子.
你应该先更改表结构.