以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  关于数据查询效率  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=92077)

--  作者:scofields
--  发布时间:2016/10/25 17:41:00
--  关于数据查询效率
狐爸,用Datatable的Load查询数据,我发现,少量数据就不行了,大量数据就很吃力。下面这段代码我写时没有考虑到大数据,查询起来相当吃力,查询10000行数据时就不行,代码是针对全表内容查询的,我想提升查询效率,有木有办法呢?能不能帮忙改成后台查找?
Dim r As Row = Tables("发运通知单").Current
 Dim dt As DataTable = DataTables("发运通知单")
 Dim str As String = e.form.controls("Textbox3").Text
 If str = "" Then
 MessageBox.Show ("请输入完整的发货密钥后再查询","温馨提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
 Return
 Else
 Dim filter As String = "1=2"
 For Each c As Col In CurrentTable.Cols
    filter &= " or convert(" & c.name & ",\'System.String\') like \'%" & str & "%\'"
     
 Next
Dim count As Integer = dt.Compute("count(客户名)", filter)
 If count > 0 Then
    Tables(dt.name).Filter = filter
     e.Form.controls("TextBox5").text= r("次级客户")
     e.Form.controls("TextBox6").text= r("品种")
     e.Form.controls("TextBox7").text= r("包装")
     e.Form.controls("TextBox4").text=  r("客户名") 
     ClipBoard.SetText(e.Form.controls("Textbox4").text)   
     ElseIf count = 0 Then
     Tables(dt.name).Filter = filter
     MessageBox.Show ("没有查询到满足条件的记录","温馨提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
     ClipBoard.SetText(0)   
     End If
 CurrentTable.Filter = filter

--  作者:有点蓝
--  发布时间:2016/10/25 17:47:00
--  
没有看到你的代码和load有什么关系。

数据多可以分页加载。或者只查询出这个客户的数据进行操作。

--  作者:scofields
--  发布时间:2016/10/25 17:55:00
--  
分页加载默认是加载后台所有数据,在实际操作中,我的数据是随时要更新,而且数据量庞大,有没有办法?把代码写入按钮中,直接后台查找?
--  作者:有点蓝
--  发布时间:2016/10/25 18:01:00
--  
谁告诉你分页加载默认是加载后台所有数据的,那分页还有什么意义。

完整看看动态加载这种内容:http://www.foxtable.com/webhelp/scr/2902.htm

--  作者:scofields
--  发布时间:2016/10/25 18:05:00
--  
点击刷新后,所有数据都出来了。不点击的话,确实是只加载了少部分数据。另外既然是分页,就是Tables,不是DataTable,我那代码好像就只从Tables里查询。蓝老师,后来筛选的系统命令是啥?
--  作者:有点蓝
--  发布时间:2016/10/25 20:00:00
--  
不管是Tables还是DataTable,都可以分页。帮助的分页例子基本都是基于DataTable的。

先好好看看帮助先吧