Daten von Tabelle2 aus Tabelle1 heraus ohne Verknüpfung auslesen
Hallo, ich komme gerade nicht weiter.
Ich habe zwei Tabellen (Tabelle1, Tabelle2), die nicht miteinander verknüpft sind und es wenn möglich auch nicht verknüpft werden sollen, da eine permanente Verknüpfung nicht notwendig und sinnvoll ist.
In Tabelle2 ist jeder Datensatz mit dem Feldwert1 nur einmal vorhanden.
Zusätzlich gibt es einen Feldwert2 als Auswahlfeld, bei dem die Werte in der Tabelle mehrfach vorhanden sein können.
Sinn ist es, wenn in Tabelle1 ein Record angelegt wird, soll in Tabelle2 geprüft werden ob bei vorhandensein des Wertes "XYZ" in Feld1 der Tabelle2, der in Tabelle2 zum gefundenen Record zugehörige Wert in Feld2 erfüllt ist um in Tabelle1 eine Entscheidung zu treffen.
Anders ausgedrückt.
Prüfe aus Tabelle1 heraus, ob in Tabelle2 der Record mit dem Feldwert1 = "XYZ" vorhanden ist.
Wenn vorhanden, schreibe in eine Variable den Feldwert2 aus Tabelle2.
Mit dem Skript:
let myCNT := cnt(select Tabelle2 where Feldwert1 = "XYZ");
if myCNT = 0 then
alert("nicht vorhanden")
else
alert("vorhanden");
end
kannich prüfen, ob ein Datensatz mit der Bedingung "XYZ" vorhanden ist oder nicht.
Das funktioniert einwandfrei.
Nun stecke ich aber fest.
Ich möchte jetzt, wenn der Datensatz gefunden ist, den Inhalt von Feldwert2 in eine Variable schreiben.
Und das alles aus Tabelle1 heraus ohne Verknüpfung.
Ich habe alles was mir einfällt probiert:
...
else
alert("vorhanden");
first(select Tabelle2 where Feld2 = "XYZ") oder select Tabelle2 where Feld2 = "XYZ"
let Variable := Feld2 oder let Variable := Tabelle2.Feld2
end
Das klappt nicht, weil die Fehlermeldung kommt, dass eine Tabellenspalte fehlt.
Ich kann nicht auf das entsprechende Datenfeld des gefundenen Datensatzes zugreifen.
Das ist wahrscheinlich nur ein Syntaxfehler von meiner Denke.
Kann mir hier jemand behilflich sein das Problem zu lösen?
Vielen Dank
Gruss
Uwe
3 Antworten
-
Hallo Uwe, man könnte die Prüfung (cnt) und das Auslesen von Feld2 (first) zusammenfassen, z. B. so:
let myVariable := first((select Tabelle2 where Feld1 = "XYZ").Feld2)
if myVariable != null then
alert("Vorhanden")
else
alert("Nicht vorhanden")
end
-
Hallo Copytexter.
Das funktioniert schon so wie ich es benötige. Danke dafür.
Mit diesem Select-Befehl bekomme ich den einen Wert des gefundenen Records.
Was, wenn ich später noch einen weiteren Wert eines anderen Datenfeldes benötige.
Ich würde jetzt den Select-Befehl nochmal mit einem anderen Feld schreiben und einer anderen Variablen zuweisen.
Gibt es noch einen anderen Weg, wenn der Record gefunden wurde weitere Felder auszulesen? (Für eventuelle zukünftige Ideen)
Gruss
Uwe
-
Nun ja, wenn man mehrere Felder auslesen wili, müsste man halt die ID des gefundenen Datensatzes auslesen und darüber auf die Inhalte zugreifen. Mal so ganz spontan aus dem Kopf (also ohne Gewähr):
let myID := first(select Tabelle2 where Feld1 = "XYZ")
if myID != null then
let myVariable := myID.Feld2
alert("Vorhanden")
else
alert("Nicht vorhanden")
end
Über myID.FELDNAME könnte man auch auf weitere Felder des Datensatzes in Tabelle2 zugreifen.
Content aside
- vor 5 JahrenZuletzt aktiv
- 3Antworten
- 1360Ansichten