0

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

null
    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    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

    • Aaron_Failenschmid
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Welche Arten von Feldern müssen Nummer und Name sein? bisher sind es Zahl- und Text-Feld

    • Aaron_Failenschmid
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Und er gibt mir leider eine Fehlermeldung "Updates not allowed in select in Zeile 2, Spalte 67", also bei ").Name"

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Oh, Doppelpunkt zuviel:

     

    let me:=this;
    me.Name:=first(select NEBENTABELLENNAME where Nummer=me.Nummer).Name

    • Aaron_Failenschmid
    • vor 4 Jahren
    • Gemeldet - anzeigen

    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).Nummer

    Wenn ich das allerdings Versuche, löscht er das Zahlenfeld.

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    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