报表Query中的DataSource间的关系

在报表中,用Query做报表的数据源,如果有多个数据源,并且数据源之间要通过一定的字段关联起来,有两种方式
1.将子数据源的Relations属性设为Yes,这样子数据源和父数据源之间的关系会根据物理表的关系自动建立
2.手动在Relations节点下添加关系.
这两种方式都没办法解决一个问题,父子数据源之间存在两种关联,一种是Nomal的,一种是Field Fixed.
比如InventTrans和InventJournalTable这两个表之间有多个关系,都是通过字段TransRefId进行Nomal方式的关联,同时通过限定不同的TransType来定义一个Field Fixed关系,这样这两个表之间就形成了BOM,BOMLine,InventJournal等多个Ralations,在报表中如果想通过InventJournal这个关系取得两个表中的数据,用上述两种方式还真没办法实现(也许有,俺没找到),因为如果采用第一种方法,始终会采用默认的第一个关系(不知道怎么指定用InventJournal这个关系),而第二种方法没办法创建Field Fixed类型的关系.
查看文档也没找到解决方案,没办法,只能重载了fetch方法,用代码Load特定的关系,代码如下:
None.gif public  boolean fetch()
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    boolean ret;
InBlock.gif    QueryRun qr;
InBlock.gif    DictRelation dict;
InBlock.gif        ;
InBlock.gif    qr 
= new QueryRun(this);
InBlock.gif
InBlock.gif    dict 
= new DictRelation(tablenum(inventTrans));
InBlock.gif    dict.loadNameRelation(
"InventJournal");
InBlock.gif
InBlock.gif    qr.query().dataSourceTable(tablenum(InventTrans)).addRelation(dict);
InBlock.gif    ret 
= super();
InBlock.gif    
return ret;
ExpandedBlockEnd.gif}

另外谴责一把右对齐,真搞不清楚Axapta为什么弄个右对齐出来,上述两个表的对应字段,如果按照默认安装,不调整全局类型的情况下,查不出数据,因为默认情况下,一个左对齐,一个右对齐,ft!

转载于:https://www.cnblogs.com/Farseer1215/archive/2006/09/07/497973.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值