以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  代码优化请教  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=71449)

--  作者:hbhb
--  发布时间:2015/7/11 12:21:00
--  代码优化请教
大师:好!以下代码10000行数据运行要10秒,如何优化?
For Each r1 As Row In b1.Rows                   \'---清除字符-----
    For Each l1 As Col In b1.Cols
        If r1.IsNull(l1) = False  Then
        If l1.Index >= maxcol Then Exit For
         
        r1(l1) = trim(r1(l1).replace(" ",""))
        
        End If
    Next
Next


--  作者:y2287958
--  发布时间:2015/7/11 12:50:00
--  
具体说一下你的要求(最好上传项目文件)
你这样每行每列的循环肯定不会快的

--  作者:hbhb
--  发布时间:2015/7/12 9:45:00
--  
请教如何清除表中各单元格数据的空字符?
--  作者:大红袍
--  发布时间:2015/7/12 10:19:00
--  

 那用sql语句做呗

 

up date {表A} set 第一列 = trim(第一列), 第二列 = trim(第二列)


--  作者:hbhb
--  发布时间:2015/7/12 10:37:00
--  
不错,好!再请问:
1、能否这样写 up date {表A} set 第一列 = trim(第一列.replace(" ",""))
2、因为列数太多,编列组合sql语句如何写?指导一下!

--  作者:大红袍
--  发布时间:2015/7/12 10:48:00
--  

 Access没有Replace函数,所以你只能用1楼的方法处理。

 

 http://www.foxtable.com/help/topics/0401.htm

 


--  作者:czy
--  发布时间:2015/7/12 11:17:00
--  
组合编写可以这样吧

Dim sqltxt As String = "Up date {表A} Set "
For Each dc As DataCol In  DataTables("表A").DataCols
    sqltxt & = dc.Name & " = trim(" & dc.Name & "),"
Next
Output.Show(sqltxt.Trim(","))

--  作者:hbhb
--  发布时间:2015/7/12 11:27:00
--  
那50000行,50列的数据处理没有2分钟下不来。
那代码中trim,replace,是不是都耗时?
先用sql清空前后,再用狐表replace如何?

--  作者:大红袍
--  发布时间:2015/7/12 11:31:00
--  

1、为什么你不在导入的时候,就把空格处理掉;

 

2、数据越多,耗时肯定越长,只能试试7楼了


--  作者:hbhb
--  发布时间:2015/7/12 11:43:00
--  
谢谢!
我是用数据填充器填充的?这一步不会处理空字符?