0

Aus mehreren verknüpften Tabellen neue Datensätze erstellen

Grundlage (vgl.Bild)

Es bestehen Tabellen mit den folgenden Verknüpfungen:

Mietobjekte 1 → n zu Verträge 

Verträge 1 → n zu Vertragskonto und zu Mietzinsen

 

Meine Fragestellung: Wie muss die Funktion lauten

Für alle 'Verträge', die zu einem Mietobjekt gehören und den  'Status Vertrag' != "gekündigt" haben (es gibt laufend und befristet), soll mit einem Button jeden Monat im verknüpften 'Vertragskonto' ein Datensatz mit den folgenden Inhalten erstellt werden, wobei die entsprechenden Felder in 'Vertragskonto' bestehen .

 

Datum aus Mietobjekte.Sollstellung → Datum in Vertragskonto.Sollstellung

und

Betrag von Mietzinsen.Nettomietzins where 'Status Mietzins' = "gültig" → Betrag in 'Vertragskonto.Nettomietzins

und

Betrag von Mietzinsen.Heizung → in Vertragskonto mit der folgenden Bedingung

if Mietzins.'Status' = "gültig" then

if Mietzins.'Heizung ap' = 1 then

Vertragskonto.'Heizung a' else

Vertragskonto.'Heizung p'

end

end

und

Betrag von Mietzinsen.Nebenkosten → in Vertragskonto mit der folgenden Bedingung

if Mietzins.'Status' = "gültig" then

if Mietzins.'Heizung ap' = 1 then

Vertragskonto.'Nebenkosten a' else

Vertragskonto.'Nebenkosten p'

end

end

und

Betrag von Mietzinsen.Liftkosten → in Vertragskonto mit der folgenden Bedingung

if Mietzins.'Status' = "gültig" then

if Mietzins.'Liftkosten ap' = 1 then

Vertragskonto.'Liftkosten a' else

Vertragskonto.'Liftkosten p'

end

end

und

Betrag von Mietzinsen.Allgemein → in Vertragskonto mit der folgenden Bedingung

if Mietzins.'Status' = "gültig" then

if Mietzins.'Allgemein ap' = 1 then

Vertragskonto.'Allgemein a' else

Vertragskonto.'Allgemein p'

end

end

 

Kann man das in einer Funktion machen? Mir raucht der Kopf. Vielen Dank für jede Idee!

 

1 Antwort

null
    • Marco.1
    • vor 2 Wochen
    • Gemeldet - anzeigen

    Da meine Frage fast eine Woche in der cue steckengeblieben ist, fand ich inzwischen mit ChatGPT die folgende Lösung die funktioniert, möglicherweise nicht super elegant ist.

     

    let myarchiv := (select 'Verträge' where text('Status Vertrag') != "gekündigt");
    for vertrag in myarchiv do
        let SoDa := 'Datum Sollstellung';
        if cnt(select Vertragskonto where Vertrag = vertrag and 'Datum Sollstellung' = SoDa) > 0 then
            alert("Für diesen Monat ist die Sollstellung schon erfolgt!")
        else
            let neMiete := last(vertrag.Mietzinsen.Nettomietzins);
            let heizak := if last(vertrag.Mietzinsen.'Heizung ap') = 1 then
                    last(vertrag.Mietzinsen.Heizung)
                end;
            let heizpa := if last(vertrag.Mietzinsen.'Heizung ap') = 2 then
                    last(vertrag.Mietzinsen.Heizung)
                end;
            let nekoak := if last(vertrag.Mietzinsen.'Nebenkosten ap') = 1 then
                    last(vertrag.Mietzinsen.Nebenkosten)
                end;
            let nekopa := if last(vertrag.Mietzinsen.'Nebenkosten ap') = 2 then
                    last(vertrag.Mietzinsen.Nebenkosten)
                end;
            let likoak := if last(vertrag.Mietzinsen.'Liftkosten ap') = 1 then
                    last(vertrag.Mietzinsen.Liftkosten)
                end;
            let likopa := if last(vertrag.Mietzinsen.'Liftkosten ap') = 2 then
                    last(vertrag.Mietzinsen.Liftkosten)
                end;
            let allgak := if last(vertrag.Mietzinsen.'Allgemeine ap') = 1 then
                    last(vertrag.Mietzinsen.'Allgemeine NK')
                end;
            let allgpa := if last(vertrag.Mietzinsen.'Allgemeine ap') = 2 then
                    last(vertrag.Mietzinsen.'Allgemeine NK')
                end;
            let new := (create Vertragskonto);
            new.(Vertrag := vertrag);
            new.('Datum Sollstellung' := SoDa);
            new.(Nettomiete := neMiete);
            new.('Heizung akonto' := heizak);
            new.('Heizung pauschal' := heizpa);
            new.('Nebenkosten akonto' := nekoak);
            new.('Nebenkosten pauschal' := nekopa);
            new.('Liftkosten akonto' := likoak);
            new.('Liftkosten pauschal' := likopa);
            new.('Allgemeine NK akonto' := allgak);
            new.('Allgemeine NK pauschal' := allgpa)
        end
    end;
    'Datum Sollstellung' := null