AX 2012: Subselects über Computed columns abbilden

Mit Hilfe von Computed columns von Views sind auch in Dynamics AX Subselects/Subqueries möglich.

Im folgenden habe ich eine Methode erstellt, die der Methode inventTable.productName() nachempfunden ist.

private static server str compColItemName()
{
    #define.ViewName("ItemNameView")

    #define.DataSourceName("InventTable")
    #define.FieldItemId("itemId")
    #define.FieldProduct("Product")
    str sProduct;
    DictView dictView;
    str translationSQLStr;
    str productSQLStr;

    dictView = new DictView(tableNum(#ViewName));

    sProduct = dictView.computedColumnString
        (#DataSourceName,
        #FieldProduct,
        FieldNameGenerationMode::FieldList,
        true);

    translationSQLStr = strFmt("SELECT Name FROM EcoResProductTranslation WHERE EcoResProductTranslation.Product = %1 AND LanguageId = '%2'", sProduct, CompanyInfo::find().LanguageId);
    productSQLStr = strFmt("SELECT DisplayProductNumber FROM EcoResProduct WHERE EcoResProduct.RecId = %1", sProduct);

    return strFmt("isNUll((%1), (%2))", translationSQLStr, productSQLStr);
}

ViewEin View der diese Methode verwendet, kann wie im Screenshot dargestellt aussehen.

Einen solchen View könnte man beispielsweise auch als Ersatz für die Display-Methode in Forms einbinden. Dies hätte den Vorteil, daß man auch nach dem Artikelnamen sortieren oder filtern könnte.

Allerdings hat eine solche Verwendung auch Nachteile, beispielsweise wird der Inhalt einer Computed column nicht wie der einer Display-Methode sofort nach der Eingabe der Artikelnummer aktualisiert.

Dieser Beitrag bezieht sich auf die Version:
Dynamics AX 2012

Peter 26.09.2014 14:26 | #1

Ich habe ein Problem mit der View. Wenn in diesem Beispiel der Produktname geändert wird, dann zeigt die View weiterhin den alten Produktnamen an.
Wie kann ich die View dazu bewegen, die Daten neu zu ermitteln?

Heinz Schweda 01.10.2014 09:50 | #2

Hallo, normalerweise sollten die Daten sofort aktuell sein.

Mir fallen auf Anhieb nur zwei mögliche Fehlerquellen ein:
1) Der Name des Produktes wird in meinem Beispiel fix in der Sprache des Unternehmens ausgeben. Kann es sein, daß dein Produktname in einer anderen Sprache geändert wurde?
2) Eine Stolperfalle kann auch sein, daß die Länge des Computed fields im View - welches auf die Methode zeigt - zu kurz ist (man muss hier ggf. die Länge an die Ausgabe der Methode anpassen).

Peter 01.10.2014 10:17 | #3

Danke für die Auflistung.
Es war Fehlerquelle 2).
Mein Fehler.

Jos Litjens 19.11.2014 10:17 | #4


Heinz Schweda 26.11.2014 09:53 | #5


Jon 10.06.2015 21:11 | #6


Heinz Schweda 16.06.2015 10:43 | #7


Max 15.09.2015 18:12 | #8

Hallo,
toller Post.

Ist es z.B. möglich alle Sprachen für diesen Artikel in einem Feld aufgelistet zu bekommen? Mit while select oder Next?

Danke

Max

Heinz Schweda 19.09.2015 10:16 | #9

Hallo Max, auf Basis deiner Frage habe ich einen neuen Beitrag geschrieben, wo ich demonstriere wie man beispielsweise Daten aus mehreren Datensätzen zu einem einzigen Feld kombinieren kann.

Du findest den Eintrag hier: http://www.schweda.net/blog_ax.php?bid=585

Ich hoffe, daß der deine Frage beantwortet, wenn nicht einfach kommentieren.

Rene Fauland 31.05.2016 07:15 | #10


 
 

 

 
 
 
Beiträge des aktuellen Monats
November 2024
MoDiMiDoFrSaSo
 123
45678910
11121314151617
18192021222324
252627282930 
 
© 2006-2024 Heinz Schweda | Impressum | Kontakt | English version | Mobile Version
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