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
-
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.
-
Hallo Frank, die Untertabelle enthält mehrere Datensetze,oder? Welchen datensatz möchtest du in der Haupttabelle analysieren/anzeigen lassen?
Leo
-
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...
-
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
-
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
-
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
-
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
Content aside
- vor 5 JahrenZuletzt aktiv
- 7Antworten
- 2416Ansichten