以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  外部表的动态加载数据还是解决不了  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=2125)

--  作者:jgc1010
--  发布时间:2009/3/16 20:50:00
--  外部表的动态加载数据还是解决不了

在项目属性的BeforeLoadOuterTable中执行Select * From [Orders] Where 1= 2 后,目录树能看到,但双击最后一个节点,数据却无法显示,这是怎么回事?看来外部表的动态加载数据还是解决不了。你们能帮我解决吗?是否需要在BeforeConnectOuterDataSource中也写入代码?


我个人觉得将BeforeLoadOuterTable的代码改成如下可在SQL中执行:
If e.DataTableName = "tab_wjk"  Then
    e.SelectString = "Select * From [tab_wjk] Where id=0"
End If
但NodeMouseDoubleClick中的代码可能有问题,是否点击时需要重新加载数据表才能打开相关的记录?

 

[此贴子已经被作者于2009-3-16 21:00:08编辑过]

--  作者:狐狸爸爸
--  发布时间:2009/3/16 21:19:00
--  
双击没有加载数据,只有一个原因,你设置的条件不成立或者有错。
只要条件正确,下面的代码一定会加载符合条件的数据:

DataTables("某表").LoadFilter = 条件表达式
DataTables("某表").Load

--  作者:狐狸爸爸
--  发布时间:2009/3/16 21:23:00
--  

我可能误解你的意思了,BeforeLoadOuterTable应该不会影响目录树的生成,因为目录树是单独加载数据生成的,而不是从已经加载的数据生成,而且应该包括所有的数据:
 

Dim cmd As New SQLCommand
Dim
dt As DataTable
cmd.CommandText =
"SELECT DISTINCT 产品,客户 From {订单}"
dt = cmd.ExecuteReader()

Dim
trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.BuildDataTree(dt, "",
"产品", "客户"
)

你可以看看下面的例子,虽然是内部表的,但是道理一样:


 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:动态加载演示.table


我觉得你可能操之过急了,这两天你浪费了不少时间,如果这些时间用来先"磨刀",也许效果会更好。
[此贴子已经被作者于2009-3-16 21:24:34编辑过]

--  作者:jgc1010
--  发布时间:2009/3/16 23:17:00
--  

不好意思,我可能问得太多了.不过你的案例都是内部表的动态加载数据,而对于外部表好象并不完全适用,有些代码是必须修改的.目录树生成和双点显示数据外部表可以完成,但不加载任何数据的代码一放,就影响了目录树的数据显示.我一直找不到原因,所以才请教专家.希望不吝指教.
     因为我们的所有数据都是存储在SQL SERVER中的,一般一张表在10-30万条左右,最多的一张表在100万条,所以我最感兴趣的是能否将FOXTABE作为客户端?


--  作者:czy
--  发布时间:2009/3/16 23:22:00
--  
如果不加载任何数据仍想生成目录树,可以考虑打开项目时生成一个临时表(不可见的),然后从临时表中生成目录树就可以解决了。
--  作者:狐狸爸爸
--  发布时间:2009/3/16 23:41:00
--  
以下是引用jgc1010在2009-3-16 23:17:00的发言:

不好意思,我可能问得太多了.不过你的案例都是内部表的动态加载数据,而对于外部表好象并不完全适用,有些代码是必须修改的.目录树生成和双点显示数据外部表可以完成,但不加载任何数据的代码一放,就影响了目录树的数据显示.我一直找不到原因,所以才请教专家.希望不吝指教.
     因为我们的所有数据都是存储在SQL SERVER中的,一般一张表在10-30万条左右,最多的一张表在100万条,所以我最感兴趣的是能否将FOXTABE作为客户端?


原理是一样的,我做一个外部表的例子给你吧。


--  作者:狐狸爸爸
--  发布时间:2009/3/16 23:54:00
--  
这是使用外部数据源进行动态加载的例子:

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.rar


 

为测试方便,使用的是Aceess数据库作为数据源。

如果使用Sql Server,只需删除BeforeConnectOuterDataSource事件中的代码即可。


[此贴子已经被作者于2009-3-17 0:00:29编辑过]

--  作者:jgc1010
--  发布时间:2009/3/17 7:42:00
--  

非常感谢你这么晚还给我解答问题,并给我案例和代码.我非常喜欢Foxtable的统计、打印功能,非常方便,功能强大,一般人不需培训就能使用.列的取值功能也不错,比较容易设置.希望能早日见到商业版和开发版.