0

Schleife um Beziehung herzustellen

Hallo Community!
Ich habe eine Tabelle Arbeitnehmer und eine Tabelle Import (Beziehungsname IMPORT). In der Tabelle Arbeitnehmer möchte ich das Beziehungsfeld IMPORT füllen, indem innerhalb der Schleife nach dem Match im Feld 'Employee ID' gesucht wird. Employee ID gibt es in beiden Tabellen. 

Mein Problem: Ohne Schleife funktioniert das innerhalb eines Datensatzes. Aber mit Schleife funktioniert es nicht. Kann mir jemand auf die Sprünge helfen?

let my := this;
let impNr := first((select Import where 'Employee ID' = my.'Employee ID').Nr);
IMPORT := number(impNr)

Und das geht nicht:
for i in select Arbeitnehmer do
    i.(IMPORT := first(select Import where 'Employee ID' = i.'Employee ID').Nr)
end

2 Antworten

null
    • Rainer_Wulbeck
    • vor 3 Wochen
    • Gemeldet - anzeigen

    Habe herausgefunden, dass es zwar funktioniert, aber ewig lange dauert. Hatte bei den Versuchen den Eindruck, dass sich die DB aufgehängt hat. Selbst wenn man die drei Zeilen als 'do as server' ausführt, dauert es pro Datensatz ca. 1 Sekunde. Bekommt man das beschleunigt? 

    • pma_mgmt
    • vor 3 Wochen
    • Gemeldet - anzeigen

    Geht es um einen einmaligen Vorgang oder etwas dauerhaftes? 

    Einmalig - da kann ich nur empfehlen, über die Tabelle -> Zahnrad -> Massenbearbeitung das jeweilige Feld zu bearbeiten. 

    Alternativ kannst du es auch in ein do as deferred packen - dann läuft es asynchron. 

    Prinzipiell gilt: 
    Ein Select ist langsam. Deshalb so weit es geht select Befehle außerhalb einer Schleife verwenden.
     

    let arbeit := select Arbeitnehmer;
    for i in arbeit do
     do as deferred
    i.(IMPORT := first(select Import where 'Employee ID' = i.'Employee ID').Nr)
    end
    end