Foxtable(狐表)用户栏目专家坐堂 → 关于datatable的疑惑!


  共有8923人关注过本帖树形打印复制链接

主题:关于datatable的疑惑!

帅哥哟,离线,有人找我吗?
客家阿哥
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:822 积分:5954 威望:0 精华:0 注册:2012/10/24 15:01:00
关于datatable的疑惑!  发帖心情 Post By:2013/7/14 17:44:00 [只看该作者]

datatables().loadfilter= ""

datatables().load

 

效率与sql相比较差多远?

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

 

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


 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/7/15 8:43:00 [只看该作者]

就是一段根据你的loadfilter拼接的查询语句. 效率理论上和你直接使用相同的SQL语句FILL是一样的.  具体你可以自行测试一下对服务器的压力.

 回到顶部
帅哥哟,离线,有人找我吗?
客家阿哥
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:822 积分:5954 威望:0 精华:0 注册:2012/10/24 15:01:00
  发帖心情 Post By:2013/7/15 13:31:00 [只看该作者]

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

datatables().loadfilter= ""

datatables().load

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

 

 

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

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

 回到顶部
帅哥哟,离线,有人找我吗?
客家阿哥
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:822 积分:5954 威望:0 精华:0 注册:2012/10/24 15:01:00
  发帖心情 Post By:2013/7/15 13:35:00 [只看该作者]

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

datatables().loadfilter= ""

datatables().load

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

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

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


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/7/15 14:00:00 [只看该作者]

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

 

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

 

 

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

 


 回到顶部
帅哥哟,离线,有人找我吗?
jspta
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1732 积分:11266 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By: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。所以无论是单机版还是网络版,加载方式是一样的,没有必要区分。


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/7/15 14:12:00 [只看该作者]

是的,只是网络环境下,因为网速问题,一般不要一次加载太多数据,数据量多的时候,采用分页加载。

 回到顶部
帅哥哟,离线,有人找我吗?
客家阿哥
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:822 积分:5954 威望:0 精华:0 注册:2012/10/24 15:01:00
  发帖心情 Post By: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
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1732 积分:11266 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2013/7/15 21:09:00 [只看该作者]

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

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

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

 

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

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

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
客家阿哥
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:822 积分:5954 威望:0 精华:0 注册:2012/10/24 15:01:00
  发帖心情 Post By:2013/7/15 21:41:00 [只看该作者]

那就关于实际应用请教一下吧?

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


 回到顶部
总数 37 1 2 3 4 下一页