Foxtable(狐表)用户栏目专家坐堂 → fill的问题继续


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

主题:fill的问题继续

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


加好友 发短信
等级:小狐 帖子:393 积分:3723 威望:0 精华:0 注册:2013/10/9 23:09:00
fill的问题继续  发帖心情 Post By:2016/1/17 5:19:00 [只看该作者]

窗口table为了提高数据的响应速度,对比了fill的直接加载和动态生成talbe,再用datasource 绑定到窗口,这两个方法fill还是要快很多:
t.Fill("Sel ect * Fr om {" & 表名 & "} wh ere sys_审计项目编号='" & 全局变量审计项目编号 & "'",全局变量当前模板数据源,True)
但是目前有个小问题,fill的IsQuery参数设置为true后,有时在新增行时,行不是增加在最末,竟然插进了行中间,不管是用回车自动增行还是用addnew命令都不行,这个问题怎么解决?注IsQuery参数设置为true要比设为false速度要快不少,所以用true参数。


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/1/17 10:33:00 [只看该作者]

不可能的事情。请做例子发上来测试。


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


加好友 发短信
等级:小狐 帖子:393 积分:3723 威望:0 精华:0 注册:2013/10/9 23:09:00
  发帖心情 Post By:2016/1/17 13:16:00 [只看该作者]

这个系统比较大,不好做例子,大红袍老师可否远程帮看一下,的确是有这样的问题

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/1/17 16:33:00 [只看该作者]

不会有这种问题,如果出现,肯定是_Sortkey或者设置了排序列。

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


加好友 发短信
等级:小狐 帖子:393 积分:3723 威望:0 精华:0 注册:2013/10/9 23:09:00
  发帖心情 Post By:2016/1/17 16:50:00 [只看该作者]

排序列没有设置,我估计确实是_sortkey的问题,_sortkey都是程序在干预,我在保存数据时干预,确保它跟行号一致,这样在我从后台需要加载或计算某行数据的时候,可以准确定位到,这个跟增行时有什么冲突吗?

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


加好友 发短信
等级:小狐 帖子:393 积分:3723 威望:0 精华:0 注册:2013/10/9 23:09:00
  发帖心情 Post By:2016/1/17 16:55:00 [只看该作者]

另外,从外部表fill到窗口表的文本型列,好象无法判断出哪些列是字符型(255以下),哪些列是备注型(无限字符)?用MaxLength返回的都是-1,怎么办?
发现原因了,是fill的IsQuery的问题,设置为false,增列和判断列类型都 没有问题,设置为true就会增行乱次序和无法判断字符型和备注型。但是设为false有个最大问题,加载的时候要比true要慢不少,我要纠结的取舍吗?我由datasourse绑定改为fill就是为了提高加载的速度呀!
[此贴子已经被作者于2016/1/17 17:08:56编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/1/17 20:09:00 [只看该作者]

你msgbox看一下_Sortkey就行,默认是根据它的大小排序的。

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/1/17 20:13:00 [只看该作者]

6楼的,没办法。dataSource不会比fill慢,如果慢,就是你其它代码影响了。做例子上来测试。


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


加好友 发短信
等级:小狐 帖子:393 积分:3723 威望:0 精华:0 注册:2013/10/9 23:09:00
  发帖心情 Post By:2016/1/17 23:52:00 [只看该作者]

原来是用动态生成datatable的办法,如下面的代码:
        Dim q As new OuterTableBuilder
        q.TableName = 表名
        q.TableCaption = 表名
        q.ConnectionName = 数据源
        q.SelectString = "Se lect * Fr om [" & 表名 & "] "
        q.Build

生成datatable后,再用datasource绑定到窗口table,绑定的过程很快,但是生成datatable的过程明显有卡顿,所以后来探索其他的动态加载手段,发现用sql语句直接fill,速度要快很多,所以才改成了fill。

现在找到了为什么行会出现在上方的原因,确实因为是sortkey的问题,之前我用如下代码干预sortkey:
                If dt.basetable.Columns.contains("_SortKey") Then
                    Dim drs As List(of DataRow) = dt.Select("","[_SortKey]")
                    For i As Integer = 0 To drs.Count - 1
                        If  drs(i).BaseRow("_SortKey") <> i+1 Then
                            drs(i).BaseRow("_SortKey") = i+1
                        End If
                    Next
                End If

现在我才发现  drs(i).BaseRow("_SortKey") = i+1这句对新增行干预无效,合成的sql语句无法保存新增行的sortkey 至服务器上,求解决方案!

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


加好友 发短信
等级:小狐 帖子:393 积分:3723 威望:0 精华:0 注册:2013/10/9 23:09:00
  发帖心情 Post By:2016/1/18 0:13:00 [只看该作者]

我猜应该是这个底层的BaseRow用fill加载过去的时候,是只读的吧?为什么干预不了呢? 

 回到顶部
总数 13 1 2 下一页