以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  这里的table和datatable 俺又糊涂了!  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=3574)

--  作者:mr725
--  发布时间:2009/7/14 17:48:00
--  这里的table和datatable 俺又糊涂了!
内部表共9683行, 当在目录树中双击一个节点后(多次点不同节点都是一样),为什么下面两条显示的结果会是一样的???    请再帮我解释一下吧图片点击可在新窗口打开查看
Output.Show(tables("test").Rows.Count)
output.show(datatables("test").datarows.count)


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

--  作者:狐狸爸爸
--  发布时间:2009/7/14 17:58:00
--  
两种可能:
1、筛选的不是Tables("test")
2、或者所有行都符合筛选条件

--  作者:mr725
--  发布时间:2009/7/14 17:58:00
--  
所以:http://www.foxtable.com/dispbbs.asp?boardid=2&Id=3564 里的问题就产生了!~
beforecloseproject里设了代码 DataTables("test").DataRows.Clear()  重新打开后,还会有数据行!
--  作者:mr725
--  发布时间: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
--  发布时间:2009/7/14 18:09:00
--  
哈哈 ,你的确一直是糊涂的。
假如:
总共10000条数据
加载了1000条数据
筛选出了100条数据
那么
DataTable有1000条数据
Table有100条数据。

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

--  作者:lxl
--  发布时间: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
--  发布时间: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
--  发布时间:2009/7/14 18:49:00
--  
还有个问题:  在我点击了节点后, 我想一次性删除 test表 的所有数据时 用DataTables("test").DataRows.Clear() 肯定不行了, 应该怎样做才可以删除test表中所有的数据行(就是要是test表成为一个空表)?
--  作者:lxl
--  发布时间: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
--  发布时间: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