Computed Columns von Views sind ein recht mächtiges Werzeug, wenn es darum geht komplexe SQL-Abfragen auch in Dynamics AX abzubilden.
Das folgende Beispiel zeigt, wie es möglich ist mehrere Zeilen zu einem einzigen Feld zusammenzuführen.
Stellt euch vor, ihr möchtet eine Abfrage zur Verfügung stellen, wo alle Artikel/Freigegebenen Produkte aufgelistet werden (eine Zeile je Artikel) und es ein Feld gibt, in dem der Produktname in allen hinterlegten Sprachen ausgegeben wird.
Für diese Anforderung kann man folgende Methode compColLanguageNames verwenden, die ich in einen View ItemNameView als Computed Column namens AllItemNames eingebunden habe.
private static server str compColLanguageNames()
{
#define.ViewName("ItemNameView")
#define.DataSourceName("InventTable")
#define.FieldProduct("Product")
DictView dictView;
str sProduct;
str translationSQLStr;
dictView = new DictView(tableNum(#ViewName));
sProduct = dictView.computedColumnString
(#DataSourceName,
#FieldProduct,
FieldNameGenerationMode::FieldList,
true);
translationSQLStr = strFmt(@"SELECT Name + ' ' AS 'data()' FROM EcoResProductTranslation WHERE EcoResProductTranslation.Product = %1 FOR XML PATH('')", sProduct);
return strFmt("isNUll((%1), (''))", translationSQLStr);
}
Das Ergebnis sieht im Tablebrowser wie folgt aus:
Dieser Beitrag bezieht sich auf die Version: Dynamics AX 2012
Diese Webseite verwendet Cookies, um Benutzern einen besseren Service anzubieten. Wenn Sie weiterhin auf der Seite bleiben, stimmen Sie der Verwendung von Cookies zu.
Mehr dazu
Computed Columns von Views sind ein recht mächtiges Werzeug, wenn es darum geht komplexe SQL-Abfragen auch in Dynamics AX abzubilden.
Das folgende Beispiel zeigt, wie es möglich ist mehrere Zeilen zu einem einzigen Feld zusammenzuführen.
Stellt euch vor, ihr möchtet eine Abfrage zur Verfügung stellen, wo alle Artikel/Freigegebenen Produkte aufgelistet werden (eine Zeile je Artikel) und es ein Feld gibt, in dem der Produktname in allen hinterlegten Sprachen ausgegeben wird.
Für diese Anforderung kann man folgende Methode compColLanguageNames verwenden, die ich in einen View ItemNameView als Computed Column namens AllItemNames eingebunden habe.
private static server str compColLanguageNames() { #define.ViewName("ItemNameView") #define.DataSourceName("InventTable") #define.FieldProduct("Product") DictView dictView; str sProduct; str translationSQLStr; dictView = new DictView(tableNum(#ViewName)); sProduct = dictView.computedColumnString (#DataSourceName, #FieldProduct, FieldNameGenerationMode::FieldList, true); translationSQLStr = strFmt(@"SELECT Name + ' ' AS 'data()' FROM EcoResProductTranslation WHERE EcoResProductTranslation.Product = %1 FOR XML PATH('')", sProduct); return strFmt("isNUll((%1), (''))", translationSQLStr); }Das Ergebnis sieht im Tablebrowser wie folgt aus: