以文本方式查看主题

-  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=58361)

--  作者:happyft
--  发布时间:2014/10/15 19:23:00
--  动态加载表与Fill的比较
在项目的外部数据表设置那添加了外部表,但打开项目时没有加载,通过下面的代码需要时再加载表结构进来,

If DataTables.Contains("表C") = False Then \'如果表C没有加载
    DataTables.Load("表C")
\'加载表C

End If


这种方式和项目的外部数据表设置那不添加任何表,直接在打开窗口时将表结构及数据Fill到窗口的sqltable中,哪种方式效率更高?

谢谢!

--  作者:有点甜
--  发布时间:2014/10/15 19:39:00
--  

 动态加载的,有表属性,设置的列属性、表样式那些都有效。

 

 如果是fill进来的,你就不能灵活添加事件代码了


--  作者:HappyFt
--  发布时间:2014/10/15 19:44:00
--  
主要是想问下两者的速度哪个快,还是都差不多?
--  作者:有点甜
--  发布时间:2014/10/15 19:57:00
--  

 本质不同。一个是重新加载数据,一个是撤销数据。

 

 加载,需要从数据库去得;撤销,不需要访问数据库。

 

 如果是外部网络数据源,看数据量、看网速。


--  作者:HappyFt
--  发布时间:2014/10/15 20:46:00
--  
谢谢甜老师,但还是不明白;重新理下思路。
方式1:要用到表时用下面代码加载
If DataTables.Contains("表C") = False Then \'如果表C没有加载
    DataTables.Load("表C"
\'加载表C

End If
用完后关闭是又用下面的代码卸载;

If DataTables.Contains("表C"Then \'如果表C已经加载
    DataTables.Unload("表C")
\'卸载表C

End
If

如果再次用到此表时又要重复上述过程


方式二:

而窗口中的SQLtable是在打开窗口时才加载表

Tables(“窗口1").Fill("select *  from {表C} where [_Identify] < 0",data,False)

每次打开窗口1就加载表,关闭窗口1就卸载表了。

如果不考虑数据量,都是SQL外部数据源,仅加载表结构速度 上哪种会更快呢?


--  作者:有点甜
--  发布时间:2014/10/15 20:52:00
--  
 方式二会快一些,方法一的功能多一些。