0

Werte aus einer Untertabelle aufrufen

Ich möchte gerne in einem Formular ein Funktionsfeld einfügen, welches den Feldwert einer Untertabelle (direkt verknüpft) anzeigt, sofern bestimmte Eigenschaften gegeben sind:

Beispiel:

Tabelle A (Haupttabelle)

Tabelle A Berechnetes Feld

Tabelle B (verknüpfte Untertabelle)

Tabelle B.Feld1 "X" (J/N-Feld)

Tabelle B.Feld2 "Y" (Auswahlfeld)

Tabelle B.Feld3

Berechnetes Feld Tabelle A soll Feld3 der Tabelle B anzeigen, wenn Feld 1 = X und Feld 2 = Y 

7 Antworten

null
    • Rene
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Könnte so funktionieren beim berechneten Feld Tabelle A:

    if TabelleB.Feld1 = X and TabelleB.Feld2 = Y then TabelleB.Feld3 end

    Was soll bei nicht erfüllen der Bedingung passieren, so bleibt es dann leer.

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Frank, die Untertabelle enthält mehrere Datensetze,oder? Welchen datensatz möchtest du in der Haupttabelle analysieren/anzeigen lassen?

    Leo

    • Pro BoutiquenFonds GmbH
    • Eichelfr
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Leo, korrekt die Untertabelle enthält mehrere Datensätz (1:n-Beziehung). Ich möchte den Datensatz anzeigen, der zu dem Hauptdatensatz verlinkt ist. Über die Ausprägungen ist sichergestellt, dass dieser nur einmal vorkommt. Wenn ich ein Auswahlfeld abfrage, muss ich dann den Index Zahlenwert als Kriterium verwenden? Danke für die Hilfe...

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Frank, wenn es sichergestellt ist, dass nur einer Datensatz in der Untertabelle vorkommt, kann man mit dem first() arbeiten.

    ---

    if cnt(TabelleB)!=0 then
    let myTAB:=first(TabelleB) end;
    if myTAB.Feld1=true and text(myTAB.Feld2)="Y" then myTAB.Feld3

    ---

    Da Ja/Nein Feld nur die Werte true/false annehmen kann, weiß ich nicht was du mit "X" meinst, deswegen myTAB.Feld1=true. Bei Auswahlfelder kann man entweder auf Textwerte verweisen (text(myTAB.Feld2)="Y") oder auf die IDs. wenn "Y" die ID 2 hat wäre die Formel myTAB.Feld2=2

    Leo

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Noch end am Ende vergessen

    if cnt(TabelleB)!=0 then
    let myTAB:=first(TabelleB) end;
    if myTAB.Feld1=true and text(myTAB.Feld2)="Y" then myTAB.Feld3 end

    Leo

    • Pro BoutiquenFonds GmbH
    • Eichelfr
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Leo, vielen Dank für die Hilfe. Noch eine Frage: Wie muss ich vorgehen, wenn in der Untertabelle mehrere Werte vorkommen? Ich hatte da nämlich einen Denkfehler. In der Untertabelle können mehrere Werte vorkommen, allerdings bleibt nach der Abfrage durch die Kriterien in Feld 1 und Feld 2 zum Schluss einer übrig. Frank

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Frank,

    dann wäre die Formel so:
    ---

    if cnt(TabelleB)!=0 then
    first(TabelleB [Feld1=true and text(myTAB.Feld2)="Y"]).Feld3
    end

    ---

    Leo