Makro innerhalb eines SELECT-Statements verwenden

Das Beispiel listet beispielsweise nur aktive Stücklistenpositionen (Tabelle BOM) auf (aktiv über die Felder FromDate und ToDate). Lässt man den zweiten Parameter des Makros leer (dateNull()), so werden alle Stücklistenpositionen gelistet.

static void useMacroInSelectStatement(Args _args)
{
    bom bom;
    date emptyDate;
    
    // parameters: %1 = table instance, %2 date, %3 empty date value
    #localmacro.bomDateFilter
        && ( %2 == dateNull() || (
            ((%1.FromDate <= %2) && (%1.ToDate >= %2)) ||
            ((%1.FromDate == %3) && (%1.ToDate == %3)) ||
            ((%1.FromDate <= %2) && (%1.ToDate == %3)) ||
            ((%1.FromDate == %3) && (%1.ToDate >= %2))
            ))
    #endMacro
    ;
    
    while select bom
    where bom.ItemId == '123'
    #bomDateFilter(bom, systemDateGet(), emptyDate)
    {
        info(bom.bomid);
    }
}
Dieser Beitrag bezieht sich auf die Versionen:
Axapta 2.5, Axapta 3.0, Dynamics AX 4.0, Dynamics AX 2009, Dynamics AX 2012

anonymous 26.01.2014 09:13 | #1

Servus Heinz, das geht auch ohne macro, mit (!fromDate || bom.fromDate == fromDate)
lg

Heinz Schweda 14.02.2014 17:37 | #2

@ anonymous
Mir ging es in meinem Beitrag prinzipiell darum, daß man und wie man Makros als Teil eines SELECT-Statements verwenden kann. Wenn jemand mein Code-Beispiel 1:1 verwenden kann, dann wäre das schön, aber wohl reiner Zufall.
Nichts desto trotz vermisse ich in dem Code-Fragment von Dir etwas, derzeit würde es doch nur Datensätze liefern wo entweder kein FromDate oder ein ganz bestimmtes Fromdate eingetragen ist, oder?

 
 

 

 
 
 
Beiträge des aktuellen Monats
Dezember 2024
MoDiMiDoFrSaSo
 1
2345678
9101112131415
16171819202122
23242526272829
3031 
 
© 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