Foxtable(狐表)用户栏目专家坐堂 → 这里的table和datatable 俺又糊涂了!


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

主题:这里的table和datatable 俺又糊涂了!

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
这里的table和datatable 俺又糊涂了!  发帖心情 Post By:2009/7/14 17:48:00 [只看该作者]

内部表共9683行, 当在目录树中双击一个节点后(多次点不同节点都是一样),为什么下面两条显示的结果会是一样的???    请再帮我解释一下吧图片点击可在新窗口打开查看
Output.Show(tables("test").Rows.Count)
output.show(datatables("test").datarows.count)


图片点击可在新窗口打开查看此主题相关图片如下:又是datatable 和 table .gif
图片点击可在新窗口打开查看

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/7/14 17:58:00 [只看该作者]

两种可能:
1、筛选的不是Tables("test")
2、或者所有行都符合筛选条件

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2009/7/14 17:58:00 [只看该作者]

所以:http://www.foxtable.com/dispbbs.asp?boardid=2&Id=3564 里的问题就产生了!~
beforecloseproject里设了代码 DataTables("test").DataRows.Clear()  重新打开后,还会有数据行!

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2009/7/14 18:01:00 [只看该作者]

以下是引用狐狸爸爸在2009-7-14 17:58:00的发言:
两种可能:
1、筛选的不是Tables("test")
2、或者所有行都符合筛选条件

2、 ..... 共有9683行,筛选后只剩下十几行啊~ 

双击节点的代码:
 Select Case e.Node.Level
        Case 0
            Filter ="[代码及科目] = '" & Value(0) & "'"
        Case 1
            Filter ="[代码及科目] = '" & Value(0) & "' And [科目名称] = '" & Value(1) & "'"             
    End Select
    DataTables("test").LoadFilter = Filter
    DataTables("test").Load()


[此贴子已经被作者于2009-7-14 18:02:12编辑过]

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:858 积分:6071 威望:0 精华:19 注册:2008/9/1 9:13:00
  发帖心情 Post By:2009/7/14 18:09:00 [只看该作者]

哈哈 ,你的确一直是糊涂的。
假如:
总共10000条数据
加载了1000条数据
筛选出了100条数据
那么
DataTable有1000条数据
Table有100条数据。

你的列子没有筛选 所以DataTable和Table 都是一样了
[此贴子已经被作者于2009-7-14 18:09:10编辑过]

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:858 积分:6071 威望:0 精华:19 注册:2008/9/1 9:13:00
  发帖心情 Post By:2009/7/14 18:24:00 [只看该作者]

命令窗口执行:
Dim c  As Integer
Dim cmd As New SQLCommand
cmd.CommandText = "Select count(*) From {test}"
c = cmd.ExecuteScalar()
output.show("总共 " & c & " 条记录")
output.show("加载了 " & datatables("test").datarows.count  & " 条记录")
Output.Show("筛选出了 " & tables("test").Rows.Count & " 条记录")


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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2009/7/14 18:41:00 [只看该作者]

lxl老师: 
1、我的这个test表 一共9683条记录(行),在没有任何操作时 datatables("test") 和 tables("test") 都是一样的行数 9683行, 当点击节点后(如一楼),剩下15行,这是加载还是的结果?我没搞清楚~ ?
2、是DataTables("test").Load() 表示加载吧,并没有筛选的意思,所以一楼显示结果都一致!~
3、那么,datatabletable 都是动态的数字(行) , datatable可能少于原来的datatable的行数,我一直以为datatable的行数是不变的~

所以我这样来描述:不知对否?
总共10000条数据       这是一个表A的后台数据行数,或称 后台的  datatable  一个表的所有行数
加载了1000条数据      这是加载到表A的数据行数,或称 加载后的  datatable  可能条件不同会加载不同的行数
筛选出了100条数据     这是经过筛选后表A的数据行数,也称,前台即可见的 table
呵呵~  总之,我还是有些糊涂~~  图片点击可在新窗口打开查看


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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2009/7/14 18:49:00 [只看该作者]

还有个问题:  在我点击了节点后, 我想一次性删除 test表 的所有数据时 用DataTables("test").DataRows.Clear() 肯定不行了, 应该怎样做才可以删除test表中所有的数据行(就是要是test表成为一个空表)?

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:858 积分:6071 威望:0 精华:19 注册:2008/9/1 9:13:00
  发帖心情 Post By:2009/7/14 19:02:00 [只看该作者]

以下是引用mr725在2009-7-14 18:41:00的发言:

lxl老师: 
1、我的这个test表 一共9683条记录(行),在没有任何操作时 datatables("test") 和 tables("test") 都是一样的行数 9683行, 当点击节点后(如一楼),剩下15行,这是加载还是的结果?我没搞清楚~ ?
2、是DataTables("test").Load() 表示加载吧,并没有筛选的意思,所以一楼显示结果都一致!~
3、那么,datatabletable 都是动态的数字(行) , datatable可能少于原来的datatable的行数,我一直以为datatable的行数是不变的~

所以我这样来描述:不知对否?
总共10000条数据       这是一个表A的后台数据行数,或称 后台的  datatable  一个表的所有行数
加载了1000条数据      这是加载到表A的数据行数,或称 加载后的  datatable  可能条件不同会加载不同的行数
筛选出了100条数据     这是经过筛选后表A的数据行数,也称,前台即可见的 table
呵呵~  总之,我还是有些糊涂~~  图片点击可在新窗口打开查看

这下理解对了。

回答你第一个问题:
不做任何操作的话,默认加载所有行。LoadFliter = "True"
点一个节点后,显示15行,是重新加载。 LoadFliter = "指定条件"

严格一点说,加载后的才是DataTable.没加载的只是硬盘上的数据(不能称之谓后台DataTable)


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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:858 积分:6071 威望:0 精华:19 注册:2008/9/1 9:13:00
  发帖心情 Post By:2009/7/14 19:06:00 [只看该作者]

以下是引用mr725在2009-7-14 18:49:00的发言:
还有个问题:  在我点击了节点后, 我想一次性删除 test表 的所有数据时 用DataTables("test").DataRows.Clear() 肯定不行了, 应该怎样做才可以删除test表中所有的数据行(就是要是test表成为一个空表)?

    DataTables("test").LoadFilter = "False"
    DataTables("test").Load()


其实打开项目的时候就应该加载一个空表。这样性能才是最好的。
你看看BeforeLoadInnerTable


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