Foxtable(狐表)用户栏目专家坐堂 → 外部表的动态加载数据还是解决不了


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

主题:外部表的动态加载数据还是解决不了

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


加好友 发短信
等级:婴狐 帖子:94 积分:952 威望:0 精华:0 注册:2009/3/5 16:10:00
外部表的动态加载数据还是解决不了  发帖心情 Post By: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编辑过]

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


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

双击没有加载数据,只有一个原因,你设置的条件不成立或者有错。
只要条件正确,下面的代码一定会加载符合条件的数据:

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

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:94 积分:952 威望:0 精华:0 注册:2009/3/5 16:10:00
  发帖心情 Post By:2009/3/16 23:17:00 [只看该作者]

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


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2009/3/16 23:22:00 [只看该作者]

如果不加载任何数据仍想生成目录树,可以考虑打开项目时生成一个临时表(不可见的),然后从临时表中生成目录树就可以解决了。

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


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

以下是引用jgc1010在2009-3-16 23:17:00的发言:

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


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


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


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

这是使用外部数据源进行动态加载的例子:

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


 

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

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


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

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


加好友 发短信
等级:婴狐 帖子:94 积分:952 威望:0 精华:0 注册:2009/3/5 16:10:00
  发帖心情 Post By:2009/3/17 7:42:00 [只看该作者]

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


 回到顶部