Feld bedingt automatisch füllen
Guten Morgen,
Ich habe folgendes Problem:
Ich möchte, dass in meiner Haupttabelle das Feld Name automatisch füllen lassen, wenn im Feld Nummer etwas eingetragen wird.
In einer Nebentabelle sind zwei Spalten: Nummer und Name. Wenn ich in der Hauptabelle die Nummer eingebe, soll automatisch der Name des Gewerks angezeigt werden.
Über Verknüpfungen habe ich nur eine manuelle Lösung gefunden, die beim Benutzen und Erstellen zu lange dauert.
Ich hoffe Jemand kann mir weiterhelfen.
Aaron
6 Antworten
-
Hallo Aaron,
In Haupttabelle als trigger nach Änderung beim Feld Nummer:
---
let me:=this;
me.Name:=first(select NEBENTABELLENNAME where Nummer:=me.Nummer).Name
---Leo
-
Welche Arten von Feldern müssen Nummer und Name sein? bisher sind es Zahl- und Text-Feld
-
Und er gibt mir leider eine Fehlermeldung "Updates not allowed in select in Zeile 2, Spalte 67", also bei ").Name"
-
Oh, Doppelpunkt zuviel:
let me:=this;
me.Name:=first(select NEBENTABELLENNAME where Nummer=me.Nummer).Name -
Das hat gut funktioniert, danke.
Allerdings, gibt es eine Möglichkeit, alle Felder einmal zu triggern? jetzt müsste ich sie einzeln ändern und zurückändern.
Und das müsste sich doch an sich auch einfach umdrehen lassen wenn man die Variablen vertauscht:
let me:=this;
me.Nummer:=first(select NEBENTABELLENNAME where Name=me.Name).NummerWenn ich das allerdings Versuche, löscht er das Zahlenfeld.
-
Hallo Aaron,
um alle Datensätze zu ändern muss man eine Schleife bauen, z.B als Button:
for i in select HAUPTTABELLENNAME do
i.Name:=first(select NEBENTABELLENNAME where Nummer:=i.Nummer).Name
end
---
umgekehrt sollte auch funktionieren. Es ist aber mit Texten so, dass diese exact übereinstimmen müssen. Da dürfen keine Leerzeichen vorne und hinten stehen, die Groß/kleinschreibung muss passen usw.
man kann es ein bisschen relativieren:
let me:=this;
me.Nummer:=first(select NEBENTABELLENNAME where trim(lower(Name))=me.trim(lower(Name))).Nummer
Leo
Content aside
- vor 4 JahrenZuletzt aktiv
- 6Antworten
- 761Ansichten