Home Forum Nuclos Entwicklung Makros und Regeln Sortierung bei Suche über Regel

Ansicht von 9 Beiträgen - 1 bis 9 (von insgesamt 9)
  • Autor
    Beiträge
  • #3696
    Jan Giebels
    Teilnehmer

    Hallo,
    ob und wie ist es möglich, in einer Regel bei einer Suche eine Sortierung mit anzugeben?

    Beispiel: Wir suchen in einer Entität den Datensatz mit dem höchsten Wert. Das Attribut ist eine Ganzzahl und wir benötigen nur den Datensatz mit der höchsten Zahl.

    Wie ist das zu realisieren?

    Danke und Gruß

    Jan

    #3698
    Maik Stüker
    Teilnehmer

    Hallo Jan,

    damit ist scheinbar das RuleInterface überfordert. Sonst hätten Sie vermutlich auch schon eine Lösung gefudnen 😉

    Ich werde Ihnen eine mögliche Lösung vorschlagen, möchte aber auch darauf hinweisen das die von mir verwenden Klassen nicht Teil des Regel Interfaces sind und somit prinzipiell öfter Änderungen unterliegen.

    Viele Grüße,
    slash [file name=THEMA_Sortierung_bei_Suche_ueber_Regel.txt size=991]https://www.nuclos.de/media/kunena/attachments/legacy/files/THEMA_Sortierung_bei_Suche_ueber_Regel.txt[/file]

    #3699
    Jan Giebels
    Teilnehmer

    Vielen Dank … damit werde ich mal ein wenig rumexperimentieren und melden, was draus geworden ist *G*

    Währe vll auch ein Verbesserungsvorschlag für das RuleInterface.

    Gruss

    Jan

    #3702
    Matthias Haake
    Teilnehmer

    Hallo,

    bislang löse ich sowas immer mittels einer DB-Funktion, die mir die entsprechende ID zurück gibt. Danach kann man mit dem RuleInterface ja das Objekt anhand der ID nachladen. Aber auch nicht wirklich schön – grade wenn man LINQ gewöhnt ist 🙂

    Viele Grüße,
    Matthias

    #3704
    Jan Giebels
    Teilnehmer

    Gut das ich LINQ nie gewohnt sein werde *G*

    Aber die Lösung üebr eine DB Funktion scheint mir auch etwas sicherer, zumal so Klassenänderungen nicht so stark da reinspielen dürften.

    #3728
    Jan Giebels
    Teilnehmer

    Ich habe jetzt mal ein wenig herumprobiert und habe bei der Lösung über eine Datenbankfunktion einfach ein besseres Gefühl, da diese unabhägig von irgendwelchen Klassen ist.

    Wie kann ich denn nun eine DB Funktion in einer Geschäftsregel aufrufen und die Ergebnisse verarbeiten ?

    Danke und Gruß

    Jan

    #3729
    Maik Stüker
    Teilnehmer

    Das RuleInterface hält hierfür eine Methode bereit:


    server.callDbFunction(String sFunctionName, Class resultType, Object... oParams)

    Also zum Beispiel:

    Integer iArtikelNummer = server.callDbFunction("GET_ARTIKELNR", Integer.class, "Erste Parameterübergabe als String", iZweiteÜbergabeAlsInt, "etc...");

    Die Params sind optional und können in Ihrer Anzahl variieren.

    Viele Grüße,
    slash

    #3741
    Jan Giebels
    Teilnehmer

    Prima .. vielen Dank .. wer lesen kann … das ist ja auch in der RuleInterface Doku worhanden *G*

    Es funktioniert prima und bringt mich der Buchhaltungsentwicklung etwas nächer. Es erscheint mir auch sicherer, als Klassen zu verwenden, die sich ohne „Vorwarnung“ ändern können.

    Gruss

    Jan

    #3761
    Matthias Haake
    Teilnehmer

    Hallo Jan,

    so sollte es beispielsweise funktionieren, den Datenmsatz mit dem höchsten Wert einer Entität zu laden. Als Paramter habe ich mal noch die aktuelle Objekt-ID mitgegeben, falls man das als Filterkriterium in der DB-Funktion braucht:

    Integer parameterId = server.getObjectId();
    Integer rowId = server.callDbFunction("DB_FunctionName", Integer.class, parameterId);

    if (rowId != null)
    {
    MasterDataVO object = server.getMasterData("entityName", rowId);
    // ... ToDo
    }

    Dazu dann die passende DB-Skalarfunktion:


    CREATE FUNCTION [dbo].[DB_FunctionName]
    (
    @id numeric
    )
    RETURNS NUMERIC
    AS
    BEGIN
    DECLARE @result NUMERIC;

    SELECT TOP 1 @result = INTID
    FROM T_EO_ENTITYTABLE
    ORDER BY INTVALUE DESC;

    RETURN @result;

    Viele Grüße und viel Erfolg,
    Matthias

    PS: Grade gelesen, dass das Problem bereits gelöst ist – aber vielleicht ist der Post ja für andere noch hilfreich.

Ansicht von 9 Beiträgen - 1 bis 9 (von insgesamt 9)