2017-03-06 26 views
0

我想在dynamics ax 2009中创建视图,此视图必须返回两个或多个具有相同字段名称的表。Dynamics Axis 2009:使用UNION和具有相同字段名称的表创建视图

我准备了sql查询(查询如下),但我不知道如何将这些脚本移动到ax视图中。

select invent.ASSETID, invent.ITEMID, invent.JOURNALID as 'ids' 
    from inventjournaltrans invent 
    where invent.ASSETID != '' 

UNION 

select purch.ASSETID, purch.ITEMID, purch.PURCHID as 'ids' 
    from purchline purch 
    where purch.ASSETID != '' 
+0

你看过[查看概述](https://msdn.microsoft.com/en-us/library/cc634339(v = ax.50).aspx)和[如何合并数据源](https ://msdn.microsoft.com/en-us/library/cc605991(v = ax.50)的.aspx)? –

回答

0

请在下面找到x ++查询的示例。但你必须记住,在标准AX领域PurchId和JournalId有不同的长度,你会得到以下错误:

There is a field mismatch in the union query. Field JournalId is not compatible with field PurchId.

Query     query; 
QueryBuildDataSource qbdsInventJournalTrans; 
QueryBuildDataSource qbdsPurchLine; 
QueryBuildRange  qbrInventJournalTrans; 
QueryBuildRange  qbrPurchLine; 
; 

query = new Query(); 
query.queryType(QueryType::Union); 

qbdsInventJournalTrans = query.addDataSource(tableNum(InventJournalTrans)); 
qbdsInventJournalTrans.unionType(UnionType::UnionAll); // Include duplicate records 
qbdsInventJournalTrans.fields().dynamic(false); 
qbdsInventJournalTrans.fields().clearFieldList(); 
qbdsInventJournalTrans.fields().addField(fieldNum(InventJournalTrans, AssetId)); 
qbdsInventJournalTrans.fields().addField(fieldNum(InventJournalTrans, ItemId)); 
//qbdsInventJournalTrans.fields().addField(fieldNum(InventJournalTrans, JournalId)); 

qbrInventJournalTrans = qbdsInventJournalTrans.addRange(fieldNum(InventJournalTrans, AssetId)); 
qbrInventJournalTrans.value(SysQuery::valueNotEmptyString()); 

qbdsPurchLine = query.addDataSource(tableNum(PurchLine)); 
qbdsPurchLine.unionType(UnionType::UnionAll); // Include duplicate records 
qbdsPurchLine.fields().dynamic(false); 
qbdsPurchLine.fields().clearFieldList(); 
qbdsPurchLine.fields().addField(fieldNum(PurchLine, AssetId)); 
qbdsPurchLine.fields().addField(fieldNum(PurchLine, ItemId)); 
//qbdsPurchLine.fields().addField(fieldNum(PurchLine, PurchId)); 

qbrPurchLine = qbdsPurchLine.addRange(fieldNum(PurchLine, AssetId)); 
qbrPurchLine.value(SysQuery::valueNotEmptyString()); 

,如果你需要创建AOT查询请参考以下链接How to: Combine Data Sources

相关问题