以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于datatable的疑惑!  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=37898)

--  作者:客家阿哥
--  发布时间:2013/7/14 17:44:00
--  关于datatable的疑惑!

datatables().loadfilter= ""

datatables().load

 

效率与sql相比较差多远?

频繁使用会不会对编好的程序和数据库服务带来很大大压力?

 

也就是,我想知道datatables的工作原理是什么,相当于sql的什么语句?


--  作者:Bin
--  发布时间:2013/7/15 8:43:00
--  
就是一段根据你的loadfilter拼接的查询语句. 效率理论上和你直接使用相同的SQL语句FILL是一样的.  具体你可以自行测试一下对服务器的压力.
--  作者:客家阿哥
--  发布时间:2013/7/15 13:31:00
--  

要是单机版的话,我就会经常使用table,但是做的软件是网络版的,为了获取实时的数据,就经常使用datatable,所以要频繁通过

datatables().loadfilter= ""

datatables().load

先清除加载条件,然后再根据需要来加载需要的数据。

 

 

不知道,大虾们有什么好的方法???谢谢!

[此贴子已经被作者于2013-7-15 13:36:23编辑过]

--  作者:客家阿哥
--  发布时间:2013/7/15 13:35:00
--  

使用下面的语句来清除加载条件

datatables().loadfilter= ""

datatables().load

是不是把所有的数据先加载到foxtable?

还是,只是在数据库加载?然后再根据foxtable程序的需要加载部分数据?

如果数据量大的话?那情况会怎样?


--  作者:狐狸爸爸
--  发布时间:2013/7/15 14:00:00
--  

例如这个论坛,单击上一页、下一页,你看到的都是最新的帖子,可以刷新当前页,单击某个帖子,可以看到最新的回复。

 

在Foxtable,也没有必要频繁Load,最好分页加载,这样单击下一页、上一页,看到的都是最新的数据,新的加载树,双击选定节点,还可以刷新当前页,此外你也可以重新加载某行的数据,例如升级某行,就重新Load此行,然后单开窗口编辑。

 

 

如果需要一些数据自动的流转,可以看看帮助《工作流》

 


--  作者:jspta
--  发布时间:2013/7/15 14:05:00
--  
以下是引用客家阿哥在2013-7-15 13:35:00的发言:

使用下面的语句来清除加载条件

datatables().loadfilter= ""

datatables().load

是不是把所有的数据先加载到foxtable?

还是,只是在数据库加载?然后再根据foxtable程序的需要加载部分数据?

如果数据量大的话?那情况会怎样?

不需要清空,load默认从数据库加载,你条件直接写

datatable。loadFilter = “条件”

下次直接替换,再用load加载就可以了

加载速度与电脑和数据库性能有关系

 

table有个datatable属性,返回对应datatable。所以无论是单机版还是网络版,加载方式是一样的,没有必要区分。


--  作者:狐狸爸爸
--  发布时间:2013/7/15 14:12:00
--  
是的,只是网络环境下,因为网速问题,一般不要一次加载太多数据,数据量多的时候,采用分页加载。
--  作者:客家阿哥
--  发布时间:2013/7/15 19:05:00
--  
我记得使用 DataTables("表").Find()的时候,
如果不使用
datatables().loadfilter= ""

datatables().load

就发生找不到值得问题?!


采用模拟关联表的时候,也一样要先清除加载条件,不然的话,别人修改了记录,你这里就不能实时体现!


If Forms("收费操作").Opened()

    DataTables("收费记录表").LoadFilter = ""

    DataTables("收费记录表").Load

    Dim t As Table =Tables("收费记录表")

    With Tables("学生信息表") 

        If .Current Is Nothing Then

            t.Filter="False"

        Else

            t.Filter="学生信息表编号= " & .current("学生信息表编号")

        End If

    End With

End If


--  作者:jspta
--  发布时间:2013/7/15 21:09:00
--  

你没有理解这table和datatable的两个的区别

datatable——从数据源加载到foxtable的数据,如果设置了加载条件,则可能不完全等于数据源中的内容

table——从datatable中获取数据,如果设置了加载条件,则可能不完全等于datatable

 

那么三者的关系就变成数据表包含datatable(即foxtable中的datatable实际上相当于是数据源的table),datatable包含table

foxtable的大部分属性和方法都是针对已经加载的数据,后台没加载的,如果需要查找,可以使用SQLCommand,否则就设置过滤条件进行加载

 

 


--  作者:客家阿哥
--  发布时间:2013/7/15 21:41:00
--  
那就关于实际应用请教一下吧?

那么怎么让模拟关联表实现子表查询的是实时的后台数据?