我最近一直在研究AX查询服务。我对所有内容都有很好的理解,但似乎QueryDataFieldMetadata对象不喜欢聚合。当我构建QueryDataFieldMetadata对象时:
QueryDataFieldMetadata field = new QueryDataFieldMetadata();
field.TableName = "InventSum";
field.FieldName = "AvailPhysical";
field.SelectionField = SelectionField.Database;
并将其添加到数据源一切都很好。但是当我这样做时:
QueryDataFieldMetadata field = new QueryDataFieldMetadata();
field.TableName = "InventSum";
field.FieldName = "AvailPhysical";
field.SelectionField = SelectionField.Sum;
并将其添加到数据源中,结果集中根本不返回该字段。我在执行查询之前检查了数据源,它在字段列表中但没有返回任何内容。有谁知道为什么会发生这种情况?任何帮助将不胜感激。
答案 0 :(得分:1)
我只想出这个。问题是由于我从表中选择了另一个字段但忘记将其放在“分组依据”字段中。我很奇怪,查询服务返回THAT字段时为空,但根本没有返回聚合字段。基本上我做了一个与此相同的查询服务查询:
从ItemId,InventLocationId,WMSlocationId中选择WMSLocationId,SUM(AvailPhysical),来自InventSum组的RecId,其中ItemId =='some value';
查询返回:
InventSum.wMSLocationId = 001
InventSum.RecId = 0
包含RecId是一个错误,我忘记删除它,但不认为它会重要,因为它不在字段组中,因此将返回null。删除此选择字段确实导致在查询中返回聚合字段。
无论如何,我希望这可以帮助那些人,因为我花了一些时间才弄明白。