Foxtable(狐表)用户栏目专家坐堂 → 求助:非关联表之间的数据同步,参照教程,增加数据没有问题,但是删除数据却不能对应删除,求解!


  共有2974人关注过本帖树形打印复制链接

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

帅哥哟,离线,有人找我吗?
李孝春
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
求助:非关联表之间的数据同步,参照教程,增加数据没有问题,但是删除数据却不能对应删除,求解!  发帖心情 Post By: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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/5/5 15:35:00 [只看该作者]

调试一下  

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

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(Bin)调试一下  弹出 messagebox.show(d...  发帖心情 Post By:2015/5/5 15:40:00 [只看该作者]

弹窗提示显示 true  

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

求解!


 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/5/5 15:49:00 [只看该作者]

是TRUE 说明有找到行,在IF条件里面加入 SHOW(1) 看看是否弹出1 .有弹出就肯定会执行里面的删除代码.

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


除非2个原因

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

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

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(Bin)是TRUE 说明有找到行,在IF条件里面加入 ...  发帖心情 Post By:2015/5/5 17:33:00 [只看该作者]

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


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍02
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:43 积分:281 威望:0 精华:0 注册:2015/5/4 19:55:00
  发帖心情 Post By:2015/5/5 18:09:00 [只看该作者]

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

 

2、多行情况的删除代码

 

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


 回到顶部