AX 2012: Having-Clause über addHavingFilter

Ein neues Feature von Dynamics AX 2012 ist, daß man nun bei einem Query auch eine HAVING-Clause hinzufügen kann.

Diese Bedingung dient dazu, berechnete Werte einer GROUP BY-Clause in der WHERE-Clause berücksichtigen zu können. Dieses Feature habe ich in der Vergangenheit vor allem dazu gerne verwendet, wenn es darum ging über eine SQL-Abfrage doppelte (bzw. vielfache) Datensätze in einer Tabelle zu finden. In den bisherigen Versionen von Dynamics AX war dieses Unterfangen über X++ nur etwas umständlich abzubilden.

Microsoft hat dies scheinbar eingesehen, und stellt nun bei der Verwendung von Queries die Methode addHavingFilter zur Verfügung.

Im folgenden Beispiel möchte ich mir z.B. alle Kundengruppen ausgeben lassen, die bei mehr als nur einem Kunden hinterlegt sind.

static void AX2012_QueryHavingFilter(Args _args)
{
    query query;
    QueryRun QueryRun;
    QueryBuildDataSource QueryBuildDataSource;
    CustTable custTable;
    ;
   
    setPrefix(funcName());
   
    // Build query
    query = new query();
    QueryBuildDataSource = query.addDataSource(tableNum(CustTable));
   
    // Add fields to query
    QueryBuildDataSource.addGroupByField(fieldNum(CustTable, CustGroup));
    QueryBuildDataSource.addSelectionField(fieldNum(custTable, recId), SelectionField::Count);

 

    // Add having filter to query   
    query.addHavingFilter(QueryBuildDataSource, "recId", AggregateFunction::Count).value(">1");
   
    // Run query
    QueryRun = new QueryRun(query);
    while(QueryRun.next())
    {
        custTable = QueryRun.get(tableNum(custTable));
       
        info(strFmt("Custgroup %1: %2 records", custTable.CustGroup, custTable.RecId));       
    }
}

Das Ergebnis der oben stehenden Abfrage ohne addHavingFilter würde wie folgt aussehen:

Mit addHavingFilter ändert sich das Ergebnis/Infolog:

Natürlich kann man dieses neue Feature auch bei einem im AOT definierten Query einsetzen. Dazu gibt es einen neuen, entsprechend benannten Knoten:

 

Dieser Beitrag bezieht sich auf die Version:
Dynamics AX 2012

 
 

 

Dies ist ein Beitrag aus der Serie »Dynamics AX 2012 - What's new«

Dynamics AX 2012 steht vor der Tür. Zeit also, sich einige der neuen Features mal etwas näher anzusehen.

Alle Beiträge dieser Serie anzeigen

RSS-Feed dieser Blogserie


 

 
 
 
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