Foxtable(狐表)用户栏目专家坐堂 → [求助]关于根据子表条件加载父表的问题


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

主题:[求助]关于根据子表条件加载父表的问题

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


加好友 发短信
等级:幼狐 帖子:172 积分:1323 威望:0 精华:0 注册:2011/6/6 12:22:00
[求助]关于根据子表条件加载父表的问题  发帖心情 Post By:2012/2/17 21:41:00 [只看该作者]

项目设定如下,

有“表A”与“表B”两个表,且表B是表A的子表。

假定表A有A1,A2,A3三个字段,表B有B1,B2,B3三个字段,且A1与B1是关联字段

如果我想从表A中检索出B2大于零的字段,那么写成SQL的话应该是这样的

“Select * from 表A Where A1 In (Select B1 from 表B where B2 > 0)”

 

而在Foxtable中,如果我把表A的LoadFilter设成“A1 In (Select B1 from 表B where B2 > 0)”的话,是会报错的。

假如我先行通过处理,先把“Select B1 from 表B where B2 > 0”的结果,拼成字符数组(假定变量String)的话,

将表A的LoadFilter设成“A1 In (String)"貌似可以解决这个问题,但是当Select B1 from 表B where B2 > 0”的结果含有较大的数据量时,String会变超大,甚至数组越界而报错。

 

不知我的问题说明白没有,请问一下如何解决呢。


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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/2/18 9:49:00 [只看该作者]

可以解决,不用Load,用Fill。

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


加好友 发短信
等级:幼狐 帖子:172 积分:1323 威望:0 精华:0 注册:2011/6/6 12:22:00
  发帖心情 Post By:2012/2/18 14:49:00 [只看该作者]

我之前也是研究过Fill的,可总觉得Fill是将SQL的结果填充到另外一个表的,而不是加载到当前表的。理解有误是吗?

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


加好友 发短信
等级:幼狐 帖子:172 积分:1323 威望:0 精华:0 注册:2011/6/6 12:22:00
  发帖心情 Post By:2012/2/18 14:54:00 [只看该作者]

动态加载总结

前面介绍了各种动态加载数据的方法,现在总结一下:

1、如果是从同一个表重新加载数据,那么使用DataTable的Load方法。

2、如果需要从另一个表加载数据,那么用Fill方法。


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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/2/18 15:50:00 [只看该作者]

以下是引用dlovef在2012-2-18 14:49:00的发言:
我之前也是研究过Fill的,可总觉得Fill是将SQL的结果填充到另外一个表的,而不是加载到当前表的。理解有误是吗?

 

建议而已,也可以当前表,Load解决不了,就用Fill。


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


加好友 发短信
等级:幼狐 帖子:172 积分:1323 威望:0 精华:0 注册:2011/6/6 12:22:00
  发帖心情 Post By:2012/2/18 16:15:00 [只看该作者]

我想试一下Fill,可是报错说“当前表存在关联,不允许使用此方法加载数据”,抓狂了,怎么办?

而且关联不能丢。

[此贴子已经被作者于2012-2-18 16:15:16编辑过]

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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/2/18 16:24:00 [只看该作者]

我也没有办法,用冬天那关联吧, Fill前删除关联,Fill后重新建立关联。


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


加好友 发短信
等级:幼狐 帖子:172 积分:1323 威望:0 精华:0 注册:2011/6/6 12:22:00
  发帖心情 Post By:2012/3/12 17:19:00 [只看该作者]

狐爸,有没有可能让Load里的条件完全替换适应普通SQL语句中Where后的内容呢。我现在用A1 In (String)的方法,由于数据量太大,执行性能真的是太不理想了,检索一次要五分多钟

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


加好友 发短信
等级:幼狐 帖子:172 积分:1323 威望:0 精华:0 注册:2011/6/6 12:22:00
  发帖心情 Post By:2012/3/15 14:45:00 [只看该作者]

老大,求助啊

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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/3/15 17:02:00 [只看该作者]

这个比较难,复杂的语法,你直接用Fill吧,完全兼容SQL。


 回到顶部