以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]关联表子表数据时常被清空,求防删除代码 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=103595) |
-- 作者:aizaishuzui -- 发布时间:2017/7/12 13:17:00 -- [求助]关联表子表数据时常被清空,求防删除代码 查找的很多次都不清楚哪里的代码出错。 我关联表是单向,然后还有设置模拟关联表。 查找与筛选用的都是Table("表A").DataTable.LoadFilter = "" 注:被清空子表不是每一次都能遇到,很偶尔 所以想求个解决方案,例如一旦保存完的行,不管怎么样都不可以删除,可以修改。 通关代码都删除不了的那种!
|
-- 作者:有点甜 -- 发布时间:2017/7/12 14:31:00 -- 1、你说的清空,不是删除吧?你看看你数据库那里数据是否还在?
2、一般数据不见了,有两种原因:1、设置了筛选条件,不符合的筛选掉了;2、设置了加载条件,不符合的就不显示了。
3、如果数据被删除,看看你代码是否写有 deletefor、delete、datarows.clear等内容 |
-- 作者:aizaishuzui -- 发布时间:2017/7/12 14:41:00 -- 回复:(有点甜)1、你说的清空,不是删除吧?你看看你... 应该是被删除了 在数据库里再也找不到了 Tables("销售_xsTable3").DataTable.LoadFilter = "" Tables("销售_xsTable3").DataTable.Load If Tables("销售_xsTable3").Rows.Count>0 Then e.Form.Controls("明细记录").Text = "今日的销售明细记录共:" & Tables("销售_xsTable3").DataTable.Compute("Count(销售单号)","销售日期= #" & Date.Today() & "#") & "条" Else e.Form.Controls("明细记录").Text = "今日没有销售明细记录" End If 或者 Tables("销售_xsTable3").DataTable.LoadFilter = "[供应商] Is Null And [供应商结账] = False And [类别] = \'手机\'" \'查找供应商为空的行 Tables("销售_xsTable3").DataTable.Load Tables("销售_xsTable3").Sort = "销售日期 DESC" \'根据销售日期排序,DESC为倒序 |
-- 作者:有点甜 -- 发布时间:2017/7/12 14:47:00 -- 执行下面代码,看弹出什么
SystemReady = false Tables("销售_xsTable3").DataTable.LoadFilter = ""
Tables("销售_xsTable3").DataTable.LoadPage = 0
Tables("销售_xsTable3").DataTable.LoadTop = "100 percent"
Tables("销售_xsTable3").DataTable.Load
msgbox(Tables("销售_xsTable3").DataTable.DataRows.Count)
SystemReady = True
|
-- 作者:aizaishuzui -- 发布时间:2017/7/12 14:52:00 -- 弹出25 刚好是子表目前有的
|
-- 作者:aizaishuzui -- 发布时间:2017/7/12 14:57:00 -- 回复:(有点甜)执行下面代码,看弹出什么?... 刚才总共有50个订单,明细大约有60个,但点了两个代码,就剩25,订单表没有被删除,只有子表遗失 [此贴子已经被作者于2017/7/12 14:58:23编辑过]
|
-- 作者:有点甜 -- 发布时间:2017/7/12 15:01:00 -- 以下是引用aizaishuzui在2017/7/12 14:52:00的发言:
弹出25 刚好是子表目前有的
导出所有代码,搜索关键字 deletefor、delete、datarows.clear
看哪里删除了数据,尽量不要写这种代码
http://www.foxtable.com/webhelp/scr/1987.htm
|
-- 作者:aizaishuzui -- 发布时间:2017/7/12 15:03:00 -- 回复:(有点甜)执行下面代码,看弹出什么?... 老师有空帮忙看看 [此贴子已经被作者于2017/7/12 16:26:40编辑过]
|
-- 作者:有点甜 -- 发布时间:2017/7/12 15:42:00 -- 1、为什么要删除?你关闭窗口的时候,如果没保存,关闭后,就会把所有新增的行删除的
For Each dr As DataRow In Tables("销售订单").DataTable.DataRows
2、同样,这段代码也会把所有商品编号、商品条码为空的删除(包括保存的记录)
Tables("销售订单.销售明细").DataTable.DeleteFor("商品编号 Is Null") Tables("销售订单.销售明细").DataTable.DeleteFor("商品条码 Is Null") |
-- 作者:aizaishuzui -- 发布时间:2017/7/12 16:30:00 -- 回复:(有点甜) 1、为什么要删除?你关闭窗口的... 谢谢老师! 那应该是这个代码的问题 Tables("销售订单.销售明细").DataTable.DeleteFor("商品编号 Is Null") Tables("销售订单.销售明细").DataTable.DeleteFor("商品条码 Is Null") 关于新增行如果未保存,不应该执行删除吗,不然编号应该就会乱了 |