0

Datensatz in Temporärer Tabelle mehrfach anlegen mit Schleife

Ich habe folgendes Problem, bei dem ich nicht weiterkomme. In meiner Datenbank möchte ich gerne in einer Tabelle aus meinem aktuellen Datensatz Werte in eine neue Tabelle (Buchungstabelle) schreiben. Dieser Vorgang soll mehrmals durchlaufen werden. Die Anzahl der Durchläufe wird über eine andere Tabelle (Kundenübersicht) gesteuert, aus der verknüpfte Datensätze bestehen. Beide Tabellen haben keine direkte Verknüpfung, sondern über das Datenmodell nur eine indirekte (über andere zwischengeschaltete Tabellen).

Folgenden Code nutze ich, der zwar den Datensatz anlegt, allerdings nur einen. Er versucht alle Werte aus der Kundenübersicht in den angelegten Datensatz zu schreiben, was ich so natürlich nicht möchte. Mit p. selektiere ich die Datensätze aus der Tabelle, die die Anzahl der Durchläufe steuert.

Was ich erreichen möchte ist, dass ich aus dem aktuellen Datensatz einige Datenfelder nehme und diese um Datenfelder aus der indirekt verknüpften Tabelle ergänze und je nach Anzahl der zugehörigen Datensätze aus der indirekten Tabelle mehrfach in eine neue temporäre Tabelle schreiben.

Ich hoffe, ich habe mich verständlich ausgedrückt. 

 

 delete (select Buchungstabelle);
let NA := Newsartikel.Nr;
let n := Newsartikel;
let PI := text(Project_ID);
let U := text(User);
let UI := text(UserID);
let PT := text(Project_TaskID);
let A := 'Beschreibung_Aktivität';
let UD := Umrechnung_Datum;
let DUTX := Dauer * 3600;
let p := (select 'Kundenübersicht' where n = NA);
let new := (create Buchungstabelle);
for i in p do
new.(ProjectID := i.PI);
new.(UserName := i.U);
new.(UserID := i.UI);
new.(ProjektTaskID := i.PT);
new.('BeschreibungAktivität' := A);
new.(DatumUTX := UD);
new.(DauerUTX := DUTX)
end

2 Antworten

null
    • Ninox-Professional
    • planoxpro
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo, ohne das Datenmodell jetzt komplett zu durchschauen, würde ich spontan sagen: Dass nur ein Datensatz angelegt wird, liegt daran, dass auch der create-Befehl nur einmal ausgeführt wird. Schon mal versucht, den in die for-Schleife zu packen? Also:

     

    [...]
    for i in p do
       let new := (create Buchungstabelle);
       new.(ProjectID := i.PI);
       [...]

    • Pro BoutiquenFonds GmbH
    • Eichelfr
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Copytexter, danke für den wertvollen Hinweis! Manchmal sieht man den Wald vor lauter Bäumen nicht. Muss zwar an dem Script noch etwas schrauben, hoffe dass ich das aber alleine hinbekomme...