以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  又来了  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=169125)

--  作者:hb8888
--  发布时间:2021/6/3 16:09:00
--  又来了
大师:请问
一、表的筛选语句最大长度限制是多少?第二种筛选语句,超过一定长度,就出错,退出!
二、如果换成第一种语句,新版本的第一个筛选语句比老版本执行的时间长多了,筛选时间比加载数据还长,劳驾解释一下!
三、jh.count 才2350个左右,表的中行数35000行左右,这才是一般企业的凭证数据,上市公司一般都有几十万,分月加载正常也要几万,分项目或科目加载也很多。


Dim jh As new List(of String)
jh = pztb.GetValues("pzzb142")


筛选语句1:

Dim Parts() As String
Parts = jh.ToArray
Dim Str1 As String
Str1 = "\'" & String.Join("\',\'", Parts) & "\'"

Dim filter As String = " pzzb142 in (" & Str1 & ")"

MessageBox.Show(2)



筛选语句2:
\'Dim filter As String
\'For Each a As String In jh                                           \'------筛选字符串后转条件表达式
    \'If filter = "" Then
        \'filter = " pzzb142 = \'" & a & "\'"
    \'Else
        \'filter = filter & " or pzzb142 = \'" & a & "\'"
    \'End If
    \'
\'Next



Dim tb5 As WinForm.Table = Forms("frmBbFxMain").Controls("Table22")
tb5.Table.StopRedraw
tb5.Table.Filter = filter


tb5.Table.ResumeRedraw



--  作者:有点蓝
--  发布时间:2021/6/3 16:29:00
--  
1、条件长度应该是有限制的,具体多少不清楚,可能要咨询一下葡萄城
2、3:筛选比加载慢是有可能的,具体看处理的数据量,已经表事件,表达式计算等。可以考虑减少处理的数据量。