0

Datensatz aus Untertabelle selektieren

Hallo Ninoxgemeinde,

ich habe folgendes Problem. Meine Datenbank hat eine Haupttabelle "Artikel", dazu gehört eine Untertabelle "Einkauf"

Die Tab. "Artikel" hat die Felder Name, Lagerort, Kategorie.

Die U-Tab. "Einkauf" hat, Datum, Einkaufsort (Auswahlfeld), Preis, Stück, Gramm, und ein (Formelfeld) "Preis pro 100gr"

Nun möchte ich in einem weiteren Formelfeld, in der Haupttabelle und in der Untertabelle den min-Preis, mit dem zugehörigen Datum und Einkaufsort angezeigt bekommen.

Der minPreis ist kein Problem, doch Datum und Einkaufsort werden immer alle aufgelistet.

Alle Versuche im Forum oder Webinar etwas passendes zu finden sind bisher gescheitert. Ich würde mich freuen, wenn einer von euch weiterhelfen kann.

Viele Grüße

Franz 

7 Antworten

null
    • truthein
    • vor 9 Monaten
    • Gemeldet - anzeigen

    Ich vermute, der minimale Preis des Artikels wird mittels "min(Einkauf.Preis)" ermittelt, wobei «Einkauf» hier der Name der Beziehung zur Untertabelle ist. (Die Beziehung liefert eine Liste von Datensätzen)

    Es können durchaus mehrere Datensätze diesen minimalen Preis haben, wenn an mehreren Orten zu diesem minimalen Preis gekauft wurde. Vielleicht ist da eine Ansicht sinnvoll, die diese Datensätze zeigt, mit der Formel "let mp := MinPreis; Einkauf[Preis = mp]" (dabei sei "MinPreis" das Formelfeld mit dem minimalen Preis. Dann siehst du darin alle Einkäufe mit diesem minimalen Preis.

    Wenn es ein einziges Formelfeld sein muss, dann müsste man zB. den ersten Datensatz wählen mit

    "let me := this;
    let mp := MinPreis;
    let pick := first(select Einkauf where Artikel = me and Preis = mp);

    ...."

    Aber das wäre dann eben nur einer der passenden Datensätze, denn du dann im Formelfeld weiter bearbeitest für irgendeine Anzeige («pick.Datum +","+pick.Ort») etc.

      • Franz_Weigelt
      • vor 9 Monaten
      • Gemeldet - anzeigen

       Hallo und vielen, vielen Dank für die schnelle Antwort.

      Mit der Ansicht ist eine gute Idee, die ich auch umgesetzt habe. Es wird immer nur 1 min Datensatz von mehreren angezeigt.

      Die Option Formelfeld, bekomme ich nicht hin. Egal wie ich es mache, es bleibt leer, obwohl kein Fehler angezeigt wird.

      ich bedanke mich noch einmal, für deine Mühe.

    • truthein
    • vor 9 Monaten
    • Gemeldet - anzeigen
    Franz Weigelt said:
    Die Option Formelfeld, bekomme ich nicht hin. Egal wie ich es mache, es bleibt leer, obwohl kein Fehler angezeigt wird.

    Wenn du damit das Formelfeld für den minimalen Preis meist, dann verstehe ich das nicht, weil das "min(Einkauf.Preis)" funktionieren müsste.

    Wenn es das Formelfeld mit dem ersten der passenden Datensätze ist, hast du vielleicht keine Ausgabe angegeben? siehe in der letzten Zeile:

    let me := this;
    let mp := MinPreis;
    let pick := first(select Einkauf where Artikel = me and Preis = mp);
    "bei zB.: " + pick.Datum + ", " + pick.Ort
    

     

    Aber diese Lösung finde ich ja eh nicht sooo toll, weil nur der erste Datensatz gezeigt wird.

    • Franz_Weigelt
    • vor 9 Monaten
    • Gemeldet - anzeigen

    Genau so eingegeben, wie du geschrieben hast und funktioniert auch. Ich bekomme immer den letzten Einkauf mit bestem minPreis angezeigt. Im Formelfeld erscheint - ID, Datum, Einkaufsort, minPreis fehlt. In der Ansicht bekomme ich ebenfalls denselben Datensatz mit dieser ID angezeigt, mit allen Feldern auch wenn minPreis doppelt vorhanden ist kommt nur 1 Datensatz. Im Moment würde mir das Formelfeld reichen, man kann ja dann min/max einrichten. Schreibe ich im Formelfeld nur die Formel min(Preis) ohne die let-Zeilen, dann wird der richtige minPreis angezeigt.

      • truthein
      • vor 9 Monaten
      • Gemeldet - anzeigen

       es müssten bei mehreren Datensätzen der Untertabelle mit dem gleichen minimalen Preis in der Ansicht alle diese Datensätze erscheinen.
      Hab mal ein Minimalbeispiel geklöppelt (also nur das Nötigste)

      • Franz_Weigelt
      • vor 9 Monaten
      • Gemeldet - anzeigen

       

      Vielen Dank, es hat funktioniert und ich bin mit dem Ergebnis sehr zufrieden.

      • truthein
      • vor 9 Monaten
      • Gemeldet - anzeigen

      Bingo!

Content aside

  • vor 9 MonatenZuletzt aktiv
  • 7Antworten
  • 119Ansichten
  • 2 Folge bereits