以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]关于根据子表条件加载父表的问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=16580) |
-- 作者:dlovef -- 发布时间: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会变超大,甚至数组越界而报错。
不知我的问题说明白没有,请问一下如何解决呢。 |
-- 作者:狐狸爸爸 -- 发布时间:2012/2/18 9:49:00 -- 可以解决,不用Load,用Fill。 |
-- 作者:dlovef -- 发布时间:2012/2/18 14:49:00 -- 我之前也是研究过Fill的,可总觉得Fill是将SQL的结果填充到另外一个表的,而不是加载到当前表的。理解有误是吗? |
-- 作者:dlovef -- 发布时间:2012/2/18 14:54:00 -- 动态加载总结 前面介绍了各种动态加载数据的方法,现在总结一下: 1、如果是从同一个表重新加载数据,那么使用DataTable的Load方法。 2、如果需要从另一个表加载数据,那么用Fill方法。 |
-- 作者:狐狸爸爸 -- 发布时间:2012/2/18 15:50:00 -- 以下是引用dlovef在2012-2-18 14:49:00的发言:
我之前也是研究过Fill的,可总觉得Fill是将SQL的结果填充到另外一个表的,而不是加载到当前表的。理解有误是吗?
建议而已,也可以当前表,Load解决不了,就用Fill。 |
-- 作者:dlovef -- 发布时间:2012/2/18 16:15:00 -- 我想试一下Fill,可是报错说“当前表存在关联,不允许使用此方法加载数据”,抓狂了,怎么办? 而且关联不能丢。 [此贴子已经被作者于2012-2-18 16:15:16编辑过]
|
-- 作者:狐狸爸爸 -- 发布时间:2012/2/18 16:24:00 -- 我也没有办法,用冬天那关联吧, Fill前删除关联,Fill后重新建立关联。 |
-- 作者:dlovef -- 发布时间:2012/3/12 17:19:00 -- 狐爸,有没有可能让Load里的条件完全替换适应普通SQL语句中Where后的内容呢。我现在用A1 In (String)的方法,由于数据量太大,执行性能真的是太不理想了,检索一次要五分多钟 |
-- 作者:dlovef -- 发布时间:2012/3/15 14:45:00 -- 老大,求助啊 |
-- 作者:狐狸爸爸 -- 发布时间:2012/3/15 17:02:00 -- 这个比较难,复杂的语法,你直接用Fill吧,完全兼容SQL。 |