Foxtable(狐表)用户栏目专家坐堂 → sqlreplacefor跨表自动更新


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

主题:sqlreplacefor跨表自动更新

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


加好友 发短信
等级:三尾狐 帖子:689 积分:5362 威望:0 精华:0 注册:2012/8/25 20:50:00
sqlreplacefor跨表自动更新  发帖心情 Post By:2022/6/29 1:26:00 [只看该作者]


现在希望在产品表修改上述四列数据后,订单表能够自动更新这些列的数据,为此可以将产品表的DataColChanged事件设置为:

Select Case e.DataCol.Name
    Case
"品名","型号","单号",
"通过"
       
Dim Filter As String = "[产品编号] = '" & e.DataRow("产品编号") & "'"
        DataTables("订单").ReplaceFor(e.DataCol.Name, e.NewValue, Filter)
End
Select




问题:删除行时,譬如删除产品编号为12345的行,希望把订单的”品名,型号,单号,通过“ 这四项清空内容,譬如用删除按钮代码

Tables("订单_Table1").Current("品名") = Nothing

Tables("订单_Table1").Current("型号") = Nothing

...

Tables("订单_Table1").Current.Delete

然后更新产品表后,这四项内容都是空。如果对应的产品编号没有加载,用replacefor,删除行,四项没有变化。用sqlreplace也没效,而且删除的速度变慢。

 

这个代码改怎么写呢?





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


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/6/29 8:34:00 [只看该作者]

产品表datarowdeleting事件

Dim Filter As String = "[产品编号] = '" & e.DataRow("产品编号") & "'"
dim dr as datarow = DataTables("订单").find(Filter )
if dr isnot nothing then
dr("品名") = Nothing
dr("型号") = Nothing
……
end if


删除按钮代码

if Tables("订单_Table1").Current isnot nothing then

Tables("订单_Table1").Current.Delete

end if


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


加好友 发短信
等级:三尾狐 帖子:689 积分:5362 威望:0 精华:0 注册:2012/8/25 20:50:00
  发帖心情 Post By:2022/6/29 20:04:00 [只看该作者]

不行呢,如果表数据没加载是没效的。譬如 订单表 编号为12345的这行的数据是加载的,删除产品表 编号为12345行, 订单表的四项内容就被清空,如果订单表的编号为12345没有加载的,删除产品表的12345,订单表的12345四项没被清空

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


加好友 发短信
等级:三尾狐 帖子:689 积分:5362 威望:0 精华:0 注册:2012/8/25 20:50:00
  发帖心情 Post By:2022/6/30 0:10:00 [只看该作者]

已经解决了,其实很简单用appendload就行,需注意的是,新增行的时候没有保存,然后同时另外的表加载其它数据。这时候删除行就不起效了,所以新增行同时保存行才能避免这个问题

 回到顶部