以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]使用fill是清空了后台表的数据  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=92111)

--  作者:xuezxz
--  发布时间:2016/10/26 12:58:00
--  [求助]使用fill是清空了后台表的数据
怎么发不了贴?
--  作者:xuezxz
--  发布时间:2016/10/26 13:03:00
--  
好像插入代码就通不过

代码示例在下面,zztb是SQLTable类型
[此贴子已经被作者于2016/10/26 13:59:09编辑过]

--  作者:xuezxz
--  发布时间:2016/10/26 13:10:00
--  

图片点击可在新窗口打开查看
[此贴子已经被作者于2016/10/26 13:11:56编辑过]

--  作者:有点蓝
--  发布时间:2016/10/26 14:19:00
--  
跟fill没有关系,是DataRows.Clear()惹的祸

Clear方法会直接从后台清除所有行,并即刻生效,且不能撤销,所以一定要慎重使用。

Fill会自动更新数据,没有必要Clear了

--  作者:xuezxz
--  发布时间:2016/10/26 16:06:00
--  
可是我清除的是窗口表的数据,怎么把引用的后台表的数据清除了?
--  作者:有点蓝
--  发布时间:2016/10/26 16:21:00
--  
请仔细看帮助

DataRows.Clear()是datatable的方法,不是table的

--  作者:xuezxz
--  发布时间:2016/10/26 19:28:00
--  
以下是引用有点蓝在2016/10/26 16:21:00的发言:
请仔细看帮助

DataRows.Clear()是datatable的方法,不是table的

有点弄糊涂了
我写的是
dim zztb as table = e.form.controls("中转“).table
zztb.datatable.datarows.clear

按说是清除窗口中的表才是,怎么会清除读取数据的明细表去了呢?

上面一行取消了,问题是没了,只是有点搞不懂为什么会这样,是指通过fill加载数据后,这个窗口表的datatable就直接绑定到后台表去了吗?


--  作者:有点蓝
--  发布时间:2016/10/26 20:52:00
--  
先搞清楚table 和datatable的关系:http://www.foxtable.com/webhelp/scr/1586.htm

假如把数据库比作是工厂,datatable这个仓库可以放全部的产品(全部加载),也可以放部分的产品(有条件加载部分数据);

而table这个展厅也可以把仓库全部产品摆出来(默认就是显示全部datatable的数据),也可以摆出部分产品(设置Filter),不管怎么样展厅就和仓库有关联了,zztb.datatable指的就是和zztb这个展厅关联的仓库,注意指的是仓库

当然展厅也可以展示其它仓库的产品(比如Fill,Fill的动作就是把展厅原来的产品放回原仓库,然后把另外一个仓库的产品摆出来)

仓库和展厅都提供了清除(移除数据)和销毁(删除数据)的服务。清除相当于把产品还回来的地方,如清除仓库相当把产品返回工厂。而销毁却相当于把产品就地毁灭了,不管是在仓库销毁还是在展厅销毁,这个产品都不存在了,当然工厂(数据库)也就不会存在这个产品(数据)了。

zztb.datatable.datarows.clear就是把展厅关联的仓库的产品完全销毁了,而且是用原子弹炸的灰都不剩下的那种,明白了吗

--  作者:xuezxz
--  发布时间:2016/10/27 9:05:00
--  
谢谢有点蓝的讲解

以前一直以为用fill方式生成的表的datatable是独立的
是不是可以这样理解,用fill方式生成的表,其datatable就是被引用的表,和副本表一样。




--  作者:有点蓝
--  发布时间:2016/10/27 9:21:00
--  
差不多吧