0

Datensätze mit Untertabelle per Button übertragen

Liebe Ninox-Freunde,

ich verzweifle Langsam, weil ich kein Programmierer bin, aber die Dinge verstehen möchte. 

Ich habe zwei Haupttabellen (Angebot & Rechnung) mit jeweils Untertabellen (Angebotsposition & Rechnungsposition). In der Tabelle (Angebot) möchte ich ein Angebot zusammenstellen mit den Angebotspositionen. Wenn das Angebot angenommen wird, will ich auf eine Befehlsbutton drücken und es soll in der Haupttabelle (Rechnung) ein neuer Datensatz entstehen. Die Angebotspositionen sollen in die Rechnungspositionen übernommen werden. 

Einiges habe ich schon hinbekommen: Kunde, ID-Nummer und Datum werden schon übertragen, aber das mit der Schleife bekomme ich nicht hin. Hab schon verschiedene Varianten versucht. 

let me := this;
let newR := (create Rechnung);
newR.(Kunde := me.Kunde);
newR.('ID-Nummer' := me.'ID-Nummer');
newR.(Datum := me.Datum);
for i in Angebotsposition do
    ????? Was soll ich hier eintragen ????
end;
openRecord(newR)

Danke für jede Hilfe.

Lg Victor

4 Antworten

null
    • UweG
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hier eine kleine Bsp-DB
     

    • chalvi // WERBEAGENTUR GbR
    • VS2021
    • vor 2 Jahren
    • Gemeldet - anzeigen

     Hallo Uwe,

    vielen Dank für deine schnelle Antwort. Ich habe meine Datenbank etwas anders aufgebaut, deshalb stehe ich weiterhin auf dem Schlauch. Ich habe jetzt meine Datenbank angehängt. Vielleicht könntest du mir da nochmal zeigen, wie du da die Formel schreiben würdest. Ich will es einfach verstehen. Habe mir schon viele Beispiele angeschaut und ausprobiert und merke, dass mir immer etwas fehlt vom denken her.

    Vielen Dank nochmals.

    Lg Victor

    RECHNUNG-ANGEBOT.ninox

      • Ninox-Professional
      • planoxpro
      • vor 2 Jahren
      • Gemeldet - anzeigen

      VS2021 Hallo Victor, die Schleife zum Erstellen der Rechnungspositionen könnte z. B. so aussehen:

      [...]
      for i in Angebotsposition do
          let NewRP := (create Rechnungsposition);
          NewRP.(Rechnung := newR);
          NewRP.(Position := i.Position);
          NewRP.(Betrag := i.Betrag);
          NewRP.(Bezeichnung := i.Bezeichnung)
      end;
      [...]
      

      Dabei geht Ninox alle Datensätze der Untertabelle 'Angebotsposition' durch und speichert deren jeweilige Datensatz-ID in der Variable 'i'. Über diese ID können dann innerhalb der Schleife die Inhalte der jeweiligen Angebotsposition referenziert und in die neue Rechnungsposition übertragen werden. Die Zuordnung der Rechnungsposition zum übergeordneten Rechnungs-Datensatz erfolgt über die Variable 'newR'. 

      • chalvi // WERBEAGENTUR GbR
      • VS2021
      • vor 2 Jahren
      • Gemeldet - anzeigen

      planox. pro 

      Hallo Planox.pro! Vielen Dank für deine Hilfe. Es funktioniert sehr gut. Jetzt kann ich es gut nachvollziehen wie die Schleifen funktionieren. Das ist genial. Vielen Dank.

       

      Lg Victor