以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  删除问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=56154)

--  作者:rjh4078
--  发布时间:2014/8/30 16:08:00
--  删除问题

发现使用datarowdelete或者rowdelete 只会将行从前端删除并不会从后台删除 如何让系统的删除不打折扣 只要执行了删除命令 前后台都删除

之前是通过全局表deleted事件来触发e.datatable.save但是这个会有点问题 如果遇到删除父行 子行又特别多 又触发beforesave事件就会陷于混乱 让人无法捉摸


--  作者:Bin
--  发布时间:2014/8/30 16:09:00
--  
除开执行 e.datatable.save 没啥好方案了.
--  作者:狐狸爸爸
--  发布时间:2014/8/30 16:10:00
--  

参考:

http://www.foxtable.com/help/topics/2899.htm

 


--  作者:rjh4078
--  发布时间:2014/8/30 16:19:00
--  
狐爸这个sqldeletefor放到哪个事件中比较好?deleting事件中无法使用delete命令, 想使用全局事件来解决所有表的删除问题。如果放到按钮工作量太大了。如果放到beforedelete事件中是否影响表的独立beforedelete事件?
[此贴子已经被作者于2014-8-30 16:22:24编辑过]

--  作者:狐狸爸爸
--  发布时间:2014/8/30 16:26:00
--  

全错,应该放在你的删除按钮中,单击此按钮,彻底删除行。

主表和子表的删除,都在这个按钮中,都用SQLDeletefor


--  作者:Bin
--  发布时间:2014/8/30 16:26:00
--  
狐爸的意思是 放到按钮上去.

你可以编码获取选中行的_IDentify  然后把删除条件设置为这个.

--  作者:rjh4078
--  发布时间:2014/8/30 16:42:00
--  
这个工作量有点巨大
--  作者:狐狸爸爸
--  发布时间:2014/8/30 16:45:00
--  

呵呵,我不明白了,何来工作两巨大之说?

 

例如你要删除当前订单(父表)及其订单明细(子表),按钮的代码就是:

 

Dim Flt As string = "订单编号 = " & Tables(" 订单").Current("订单编号")

DataTables("订单").RemoveFor(flt)

DataTables("订单").SQLDeleteFor(flt)

DataTables("订单明细").RemoveFor(flt)

DataTables("订单明细").SQLDeleteFor(flt)


--  作者:rjh4078
--  发布时间:2014/8/30 18:52:00
--  
看来版主连我的需求都没搞清楚
如果一两个表 无所谓了  现在在使用的有160多个表 关联表有40多个 都这么改?
很多跨表引用 现在都是datarow.delete 其实这个数据在后台根本没删掉 
我们现在是全国联网 总部删了数据 分公司竟然还有 上级部门删了数据 下级还能sqlfind 
特别是填日报 数据量特别大 如果网络不好 用全局表datarowdeleted的e.datatable.save经常卡死  所以现在寻求效率一点的方案


--  作者:有点甜
--  发布时间:2014/8/31 9:26:00
--  

 回复9楼,请看8楼。

 

 既然是需要实时的删除,那你就直接用sqlDeleteFor,这个是直接删除的。

 

 8楼的意思是,你用dr.Delete的时候,把后台的删除一下而已。