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
-
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 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.
-
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.
Content aside
- vor 1 JahrZuletzt aktiv
- 7Antworten
- 133Ansichten
-
2
Folge bereits