以文本方式查看主题 - 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的。 先好好看看帮助先吧
|