0

Tabellen mit Untertabellen - ganze Struktur übernehmen

In den Stammdaten meines Lösung habe ich eine 3 stufige Tabellenstruktur mit Produkt - Baugruppe - Bauteil definiert. Zudem habe ich eine 4 stufige Tabellenstruktur mit Projekt - Produkt - Baugruppe - Bauteil. Ich möchte nun einem Projekt per Skript ein Produkt zuordnen und dabei die ganze Struktur d.h einen Produkt-Record und dessen Untereinträge übernehmen. Dabei habe ich im folgenden Skript ein Problem:

                let me := this;
                let tmpProdukt := (select Produkte where Nr = me.Code);
                let tmpProduktID := text(tmpProdukt.ID);
                let tmpProduktBez := text(tmpProdukt.Bezeichnung);
                let newProdukt := (create 'Projekt-Produkt');
                newProdukt.(
                    Projekte := me;
                    'Produkt-ID' := tmpProduktID;
                    'Produkt-Bezeichnung' := tmpProduktBez
                );
                let tmpBG := (select Baugruppen)[Prod_ID = tmpProduktID];
                for BGcnt in tmpBG do
                    let BG_Bez := tmpBG.BGcnt.Bezeichnung;
                    alert(BG_Bez);
                    let newBG := (create 'Projekt-BG');
                    newBG.(
                        'Projekt-Produkt' := newProdukt;
                        Bezeichnung := BG_Bez
                    );
                end;
 

Ich rufe das Skript in der Tabelle der Projekte auf (me:=this)

Der Record newProdukt wird problemlos erstellt, die Zuordnung zum Projekt stimmt. Ebenso werden die Baugruppen (also 2. Ebene) in der ersten for-Schleife erstellt, die Zuordnungen stimmen auch, aber die Zeile "Bezeichnung := BG_Bez" ergibt eine Fehlermeldung "Der Ausdruck liefert mehrfache Ergebnisse zurück: BG_Bez". 

Ich finde den Fehler nicht, die Felder entsprechen genau den Definitionen in den Tabellen. Aber vielleicht liegt der Fehler in der fett markierten Zeile, die ich auch schon mit "let BG_Bez := tmpBG.Bezeichnung;" versucht habe. Wer kann mir hier helfen? Vielen Dank im Voraus!

2 Antworten

null
    • rainless
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Miklos, 

     

    BGcnt ist doch der Iterator über die Liste der tmpBGs. Müsste dann nicht nur

    let BG_Bez := BGcnt.Bezeichnung

    dastehen (wobei ich vermute, dass Bezeichnung ein Feld einer Baugruppe ist)? tmpBG.BGcnt dürfte es eigentlich gar nicht geben.

    • Founder & Owner
    • Miklos_Toth
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Lars,

    ja korrekt. Danke, habe es ausprobiert und funzt! Ich dachte BGcnt sei ein Zähler und nicht der Record selbst. Ich denke jetzt kann ich weiter machen, die 3. Ebene wartet...

    Ich lasse den thread noch offen, weiss ja nie...  😉

Content aside

  • Status Answered
  • vor 2 JahrenZuletzt aktiv
  • 2Antworten
  • 35Ansichten
  • 2 Folge bereits