0

Datensatz in Untertabelle erstellen

Hallo liebes Ninox-Team,

ich habe folgendes Problem:

Ich würde gerne in der Tabelle "Angebot" über eine Verknüpfung einen Artikel aus der Tabelle "Artikel" auswählen.

Anschließend soll in einer Untertabelle (Name "Kalkulation") ein neuer Datensatz erstellt werden mit diesem Artikel und den dazugehörigen Daten des Artikels wie EK-Preis und VK-Preis.

Ich habe folgendes Probiert:

Bei der Verknüpfung habe ich unter "Nach Änderung folgedes Skript ausführen" geschrieben:

 

let p := (create Kalkulation);
p.(Artikel := Angebot.Artikel.Name)

p.(Preis:=Angebot.Artikel.Preis)

usw.

Über eure Hilfe würde ich mich sehr freuen

5 Antworten

null
    • Support
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo, 

    das sieht soweit ja schon gut aus, es fehlt dann nur noch die Verbindung zum aktuellen Datensatz: 

     

    let myAngeb := this;
    let p := (create Kalkulation);
    p.(Angebot := myAngeb);
    p.(Artikel := Angebot.Artikel.Name)
    p.(Preis:=Angebot.Artikel.Preis)

    usw.

     

    Dabei ist p.Agebot das Verknüpfungsfeld in zur Tabelle Angebot.

    Gruß, Jörg

    • Developer by Smartplanung
    • smartplanung
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Guten Tag,

    ich versuche in meiner Datenbank den o.g. Code zu verwenden.

    Haupttabelle "Kerndaten" und Untertabelle "Mängel". Nun möchte ich in einem Datensatz von "Kerndaten" neue Mängel anlegen. Dazu klicke ich in dem Formular über der dargestellten Untertabelle auf das Plus. Es öffnet sich ein weiteres Formular mit einem neuen leeren Datensatz aus der Untertabelle "Mängel". Wenn ich dort nun die Beschreibung eingetragen habe, möchte ich gleich einene weiteren "Mangel" zu dem bereits ausgewählten Datensatz anlegen und nutze dafür einen Button in diesem "Mangel"-Unterformular.

    Hier ein Bild (muss leider alles Mögliche unkenntlich machen. Aber ich denke den Aufbau dahinter versteht man trotzdem):

    Hier der angepasste Code:

    let myMangel := this;
    let newMangel := (create 'Mängel');
    newMangel.(Kerndaten := myMangel);
    openRecord(record('Mängel',number(newMangel.Nr)))

    Leider wird mir folgende Fehlermeldung angezeigt:

    Expression does not return a record id of table 'Kerndaten': myMangel in Zeile 3, Spalte 33

    Wer könnte mir hier weiterhelfen? Vielen Dank vorab.

    Viele Grüße
    Patrick

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Patrick,

    ---

    let myKerndaten := Kerndaten;
    let newMangel := (create 'Mängel');
    newMangel.(Kerndaten := myKerndaten);
    openRecord(newMangel)

    ----

    Leo

    • Developer by Smartplanung
    • smartplanung
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

     

    funktioniert perfekt. Vielen Dank!

     

    Nun noch eine Frage. openRecord schließt scheinbar die Tabelle "Kerndaten", öffnet die Untertabelle "Mängel" und zeigt mir auch das darunter gespeicherte Formular-Layout aus der Tabelle "Mängel" an. PopupRecord würde ein weiteres Formularfenster (Unterformular-Layout) öffnen. Wie bekomme ich es hin, dass ich nach wie vor nur ein "Popup" Fenster mit dem neu erstellten Datensatz angezeigt bekomme? Eine Art "closeRecord" scheint es nicht zu geben, welches man vorher auslösen könnte.

     

    Gruß

    Patrick

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Patrick,

    closeRecord gibt es - der Syntaks ist aber closeRecord(). Du kannst es so versuchen:

    ---

    let myKerndaten := Kerndaten;
    let newMangel := (create 'Mängel');
    newMangel.(Kerndaten := myKerndaten);
    closeRecord();
    openRecord(myKerndaten);
    popupRecord(newMangel)

    ---

    Die Fenster werden komisch rein- und rausfahren, aber am Ende hast du dein Ergebnis.

    Leo

Content aside

  • vor 4 JahrenZuletzt aktiv
  • 5Antworten
  • 2999Ansichten