
发表于2010-6-24 15:12:24
初学ax,当看到View中不支持主表对多从表(外连接)时,类似(oracle写法):
select ...
.from table_a, table_b,table_c
where table_a.id = table_b.id(+)
and table_a.id = table_c.id(+)
第一反应是麻烦了,因为这个需求在很多地方都要用到,网上g下也没找到相关例子,自己摸索了两天终于找到解决办法,并有两种思路:
方法1、form上直接加(缺点:无法重用)
a、创建 form,并增加grid控件
b、增加datasource: table_a(主表),table_b,table_c(附加表或明细表),table_b,table_c的relations要先提前设置好和table_a相关字段的关联
c、table_b,table_c的属性JoinSource设置成table_a, LinkType设置成OuterJoin(或其他,根据需要)
d:把table_a,table_b,table_c中需要显示的字段拖拉到grid中
e:grid的DataSource设置成table_a,必须的,否则数据不显示
f:运行
方法2:用View实现
呵呵,可能大家第一反应就是:View不是不支持?View是不支持,但是Queries支持,我们要做的是把Queries作为View中的DataSource.具体步骤如下:
a:创建Queries(Q_TEST),第一层DataSource选table_a,
b:table_a下的DataSource把table_b,table_c拉进去
c:table_b,table_c的JoinMode属性设置成OuterJoin,relations设置成yes,必须的,要不达不到效果。
d:做到这里,只是创建了个多表外连接的Queries.创建View,Query属性设置成Q_TEST,保存。
e:展开Metadata,可以看到下面产生了一个和DataSource并列的Q_TEST.
f: 这时候如果把Q_TEST展开,把里面的fields直接拉到View的Fields,是拉不过去的。需要在View的Fields点右键new view fields,并把DataSource和DataFields设置成我们需要的Field,
此步非常关键.
http://momoxiaopu2010.taobao.com/search-cat-61247106-209318727-yrHJ0MTQ17A=.htm?checkedRange=true
http://momoxiaopu2010.taobao.com/view_page-15350662.htm
g:做到这里,一个我们需要的View就创建成功了!
h:最后就是创建form,增加grid,并把我们创建好的view拉到DataSource中,字段拉到grid中
i:运行
select ...
.from table_a, table_b,table_c
where table_a.id = table_b.id(+)
and table_a.id = table_c.id(+)
第一反应是麻烦了,因为这个需求在很多地方都要用到,网上g下也没找到相关例子,自己摸索了两天终于找到解决办法,并有两种思路:
方法1、form上直接加(缺点:无法重用)
a、创建 form,并增加grid控件
b、增加datasource: table_a(主表),table_b,table_c(附加表或明细表),table_b,table_c的relations要先提前设置好和table_a相关字段的关联
c、table_b,table_c的属性JoinSource设置成table_a, LinkType设置成OuterJoin(或其他,根据需要)
d:把table_a,table_b,table_c中需要显示的字段拖拉到grid中
e:grid的DataSource设置成table_a,必须的,否则数据不显示
f:运行
方法2:用View实现
呵呵,可能大家第一反应就是:View不是不支持?View是不支持,但是Queries支持,我们要做的是把Queries作为View中的DataSource.具体步骤如下:
a:创建Queries(Q_TEST),第一层DataSource选table_a,
b:table_a下的DataSource把table_b,table_c拉进去
c:table_b,table_c的JoinMode属性设置成OuterJoin,relations设置成yes,必须的,要不达不到效果。
d:做到这里,只是创建了个多表外连接的Queries.创建View,Query属性设置成Q_TEST,保存。
e:展开Metadata,可以看到下面产生了一个和DataSource并列的Q_TEST.
f: 这时候如果把Q_TEST展开,把里面的fields直接拉到View的Fields,是拉不过去的。需要在View的Fields点右键new view fields,并把DataSource和DataFields设置成我们需要的Field,
此步非常关键.
http://momoxiaopu2010.taobao.com/search-cat-61247106-209318727-yrHJ0MTQ17A=.htm?checkedRange=true
http://momoxiaopu2010.taobao.com/view_page-15350662.htm
g:做到这里,一个我们需要的View就创建成功了!
h:最后就是创建form,增加grid,并把我们创建好的view拉到DataSource中,字段拉到grid中
i:运行
[此贴子已经被作者于2010-6-24 15:26:12编辑过]











