Home Forum Nuclos Konfiguration Sonstiges Query – Zwei Attribute miteinander vergleichen

Ansicht von 7 Beiträgen - 1 bis 7 (von insgesamt 7)
  • Autor
    Beiträge
  • #7924
    Matthias KÖPER
    Teilnehmer

    Hallo,

    ich möchte von meinen Lagerbeständen gerne alle Einträge über eine Query suchen, für die der Bestand kleiner als der Maximalbestand ist (Bestand und Maximalbestand sind beide Attribute von Lagerbestand).

    Ich bekomme es irgendwie nicht hin, die beiden Attribute miteinander zu vergleichen. Ein Attribut mit einer Zahl zu vergleichen, ist kein Problem.

    Ich dachte an so etwas in der Art:

    queryLagerbestand.where(Lagerbestand.Bestand.Lt(Lagerbestand.BestandMaximal))

    oder

    queryLagerbestand.where(new SearchExpression(Lagerbestand.Bestand, Lagerbestand.BestandMaximal, QueryOperation.LT))

    Funktioniert leider beides nicht…

    Hat jemand einen Tipp für mich?

    Vielen Dank,
    skoeper

    #7925
    Frank Pavlic
    Teilnehmer

    Und was macht der QueryProvider bei folgender Vorgehensweise

    BigDecimal maxbestand = Lagerbestand.BestandMaximal;
    queryLagerbestand.where(Lagerbestand.Bestand.Lt(maxbestand))

    Bekommst Du damit Ergebnisse geliefert?

    Gruß
    Frank

    #7939
    Matthias KÖPER
    Teilnehmer

    Das würde so funktionieren, aber…

    Das Problem ist, dass der maximale Lagerbestand nicht für alle Artikel gleich ist, sondern am Lagerbestand für jeden Artikel gepflegt wird.
    Die Abfrage mit dem Vergleich zweier Attribute ist syntaktisch schon falsch, weil Lt() ein BigDecimal erwartet und nicht org.nuclos.api.businessobject.attribute.NumericAttribute.

    Der Lagerbestand hat unter anderem die Attribute Lager, Lagerort, Artikel, Maximalbestand, Minimalbestand, Bestand…

    #7945
    Matthias KÖPER
    Teilnehmer

    Habe das Problem jetzt anders gelöst (Frage erst alle Lagerbestände ab und entferne diejenigen hinterher aus der Liste, die ich nicht brauche).

    Hätte trotzdem noch Interesse an einer Lösung, die mir die richtige Menge gleich mit einer Datenbankabfrage liefert.

    skoeper

    #7947
    Frank Pavlic
    Teilnehmer

    Hallo,
    kannst du bitte mal die Regel posten, die mit Lt(..) versuchte, nur die Artikel zu finden deren Bestand kleiner als
    der Maximalbestand ist? Bis zu der Stelle wo Du dann QueryProvider.run(…) + 3 Zeilen weiter aufrufst ?
    Vielleicht noch die Angabe, welche nuclos-Version du im Einsatz hast?

    Dass der Maximalbestand pro Artikel ist, war mir schon bewusst. Ich wollte Dir auch nur die Methodik aufzeigen, den Wert in eine Variable zu sichern, und dann diese Variable in die Lt(..) – Funktion zu übergeben. Ob das Objekt Lagerbestand nun vorher für das Objekt Artikel ermittelt wurde, erschliesst sich nicht aus deinem geposteten Code-Schnipsel. Daher mein Vorschlag, mal die komplette Regel bis zur run-Methode zu posten.

    Gruß
    Frank

    #7955
    Ramin Goettlich
    Teilnehmer

    Der QueryProvider unterstützt nach heutigem Stand leider noch keine Abfragen der Form

    queryLagerbestand.where(Lagerbestand.Bestand.Lt(Lagerbestand.BestandMaximal))

    #7959
    Matthias KÖPER
    Teilnehmer

    Danke für die Antwort, nuclosian,

    viele Grüße
    skoeper

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