以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求助:非关联表之间的数据同步,参照教程,增加数据没有问题,但是删除数据却不能对应删除,求解!  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=67879)

--  作者:李孝春
--  发布时间:2015/5/5 15:34:00
--  求助:非关联表之间的数据同步,参照教程,增加数据没有问题,但是删除数据却不能对应删除,求解!

求助:非关联表之间的数据同步,参照教程,增加数据没有问题,但是删除数据却不能对应删除,求解!

 


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

 

非关联表之间的数据同步

假定有一个产品表和一个库存表,两个表都有产品编号、产品名称、产品规格三列,但是没有建立关联,我们希望:

1、在产品表增加一个产品,库存表对应也增加此产品。
2、在产品表删除一个产品,库存表对应也删除此产品。
3、在产品表更改某产品的产品编号、产品名称或产品规格后,库存表也能同步修改。

设计步骤

1、将产品表的DataColChanged事件代码设置为:

Select Case e.DataCol.name
    Case "产品编号"
        Dim dr As DataRow = DataTables("库存").Find("产品编号 = \'" & e.OldValue & "\'")
       
If dr Is Nothing Then
            dr = DataTables(
"库存").AddNew()
            dr(
"产品编号") = e.DataRow("产品编号")
            dr(
"产品名称") = e.DataRow("产品名称")
            dr(
"产品规格") = e.DataRow("产品规格")
        Else
            dr(
"产品编号") = e.DataRow("产品编号")
        End If
    Case
"产品名称","产品规格"
        Dim dr As DataRow = DataTables(
"库存").Find("产品编号 = \'" & e.DataRow("产品编号") & "\'")
        If dr IsNot Nothing Then
            dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
       
End If
End
Select

2、将产品表的DataRowDeleting事件代码设置为:

Dim dr As DataRow = DataTables("库存").Find("产品编号 = \'" & e.DataRow("产品编号") & "\'")
If
dr IsNot Nothing Then
    dr.
Delete()

End
If


[此贴子已经被作者于2015/5/5 21:03:19编辑过]

--  作者:Bin
--  发布时间:2015/5/5 15:35:00
--  
调试一下  

弹出 messagebox.show(dr IsNot Nothing)   看看结果是什么是否找到行,找不到行说明条件不对.

--  作者:李孝春
--  发布时间:2015/5/5 15:40:00
--  回复:(Bin)调试一下  弹出 messagebox.show(d...

弹窗提示显示 true  

奇怪的问题 早上都是可以操作的  下午来任何改动都没有  居然就不行了

求解!


--  作者:Bin
--  发布时间:2015/5/5 15:49:00
--  
是TRUE 说明有找到行,在IF条件里面加入 SHOW(1) 看看是否弹出1 .有弹出就肯定会执行里面的删除代码.

执行了删除代码就肯定会删除行.


除非2个原因

1.你表的删除事件执行了取消代码

2.你找到的这个行,并非你要删除的行,删除了别的行,你想要删除的反而没删除,所以你误认为未删除

--  作者:李孝春
--  发布时间:2015/5/5 17:33:00
--  回复:(Bin)是TRUE 说明有找到行,在IF条件里面加入 ...

经排查 上述问题均不存在  继续求解


--  作者:大红袍02
--  发布时间:2015/5/5 18:09:00
--  

1、锁定的行,不能删除;

 

2、多行情况的删除代码

 

DataTables("库存表").deletefor("产品 = \'" & e.DataRow("设备名称") & "\' and 序列号 in (\'" & e.DataRow("序列号").Replace(",", "\',\'") & "\')" )