[GELÖST] SQL-Abfrage - Felder nach groupby/sum ...

7. Dezember 2011 21:22

Hiho Leute,

hab da ein (hoffentlich) kleines Problem. Irgendwie klar, sonst würd ich ja den thread net aufmachen :lol:

Vorweg: Ich bin in Ausbildung und "arbeite" seit ca. 8 Wochen an AX2012 und hatte vorher noch keinerlei Kontakte damit; Auch nicht mit den Vorgängerversionen namens Axapta etc.
Meine Aufgabe ist es nun eine Art Dokumentation zu erstellen (die u.A. evtl. als Ausbildungs- und Schulungsgrundlage dienen soll).

Das Problem:
Ich möchte zu jeder SalesId in SalesTable die entsprechenden Datensätze aus SalesLine abgreifen.

Es soll eine Ausgabe in folgender Form daraus aufgebaut werden:
SalesId, SalesName, CustAccount, Custgroup
--------------------------------------------------------------------
ItemId (gruppiert), SalesQty(summiert), [SalesId]

SalesId, SalesName, CustAccount, Custgroup
--------------------------------------------------------------------
ItemId (gruppiert), SalesQty(summiert), [SalesId]

... usw. siehe Programmcode - so in etwa soll das dann aussehen.

2 Probleme habe ich nun dabei:
Zum einen habe ich, wenn ich die count- und sum-Funktionen verwende, innerhalb der if-Abfrage keinen Zugriff auf den Tabellenpuffer sTable. Ich kann das zwar so programmieren, also anstelle cTable innerhalb der if-Abfrage sTable verwenden, aber es wird nichts ausgegeben. Wenn ich breakpoints setzte und im Debugger gucke, dann hat sTable keinerlei Werte in den Tabellenfeldern. Deshalb habe ich mir einen zweiten Tabellenpuffer sTable für die Ausgabe innerhalb der if-Abfrage deklariert.
Wobei mir grad auffällt: Liegt es vllt. an den Gruppierungs- und Summierungsfunktionen?

Zum anderen finde ich, dass das mit der if-Abfrage irgendwie... naja, tschuldigung, scheisse gelöst ist. Ich weiss (noch?) nicht genau was mich daran stört, aber irgendwie stört die mich. Es muss doch möglich sein die Ausgabe auch ohne hinzubekommen. Sprich: Eine wie auch immer gestrickte SQL-Abfrage, aus der sich dann die Daten abgreifen lassen.

Kann mir da evtl. wer Rat geben?
Oder steh ich nur auf m Schlauch, so mit Brett vor dem Kopf?


Code:
static void Job14(Args _args)
{
    SalesTable          sTable, cTable;
    SalesLine            sLine;

    while select SalesId, SalesName, CustAccount, CustGroup from sTable
        join count(ItemId), sum(SalesQty), SalesId from sLine
        group by sLine.SalesId, sLine.ItemId
        where sLine.SalesId == sTable.SalesId
    {
        /*
        if (cTable.SalesId != sLine.SalesId)
        {
            select SalesId, SalesName, CustAccount, CustGroup from cTable
            where cTable.SalesId == sLine.SalesId;

            //Anstelle von 'info' hier auch 'print'
            info(strFmt("SalesId: %1 * SalesName: %2 * CustAccount: %3 * CustGroup: %4",
                cTable.SalesId, cTable.SalesName, cTable.CustAccount, cTable.CustGroup));
        }
        */

        info(strFmt("ItemId: %1 * Menge: %2, * %3", sLine.ItemId, sLine.SalesQty, sTable.SalesId));
        //breakpoint;
    }
    pause;
}



Joar, ich hoffe der post ist nicht zu bunt und mein Problem lösbar.
Dank schonmal im voraus

greetz
Joey
Zuletzt geändert von nobido am 14. Dezember 2011 15:17, insgesamt 1-mal geändert.

Re: SQL-Abfrage - Felder nach groupby/sum nicht mehr zugreif

12. Dezember 2011 19:57

Hi,

also spontan gesagt würde ich das Ganz so machen:
Code:
static void SeclectSalesLineTest(Args _args)
{
    SalesTable      sTable;
    SalesLine       sLine;
    SalesId         sId;
    ;
    while select sum(SalesQty) from sLine group by sLine.SalesId, sLine.ItemId
    {
        if(sId != sLine.SalesId)
        {
            select SalesId, SalesName, CustAccount, CustGroup from sTable where sTable.SalesId == sLine.SalesId;
            sId = sLine.SalesId;
           
            print('----------------------------------------------------------------');
            print('----------------------------------------------------------------');
            print(strFmt("SalesID: %1, SalesName: %2, CustAccount %3, CustGroup: %2", sTable.SalesId, sTable.SalesName, sTable.CustAccount, sTable.CustGroup));
            print('----------------------------------------------------------------');
        }
       
        print(strFmt("ItemID: %1, SalesQty: %2, SalesID: %3", sLine.ItemId, sLine.SalesQty, sLine.SalesId));
    }
    pause;
}

Re: SQL-Abfrage - Felder nach groupby/sum nicht mehr zugreif

14. Dezember 2011 15:16

Hallo,

ja! Vielen Dank für den Lösungsvorschlagen.
Liefert auf jeden Fall eine Ausgabe entsprechend meinen Anforderungen.

Schön da dann auch wieder eine if-Abfrage darin vorzufinden - schein ich nicht ganz so falsch gelegen zu haben :)

Ich nehme mal an dass das irgendwie auch mit einem join funktionieren wird.
Werde das mal die Tage ausprobieren, wenn die Zeit es zulässt.

So man sich nicht mehr liest:

Frohe Weihnachten schon mal

Joey