0

If-Case-Konstrukt?

Falls jemand die Muße hat mir zu helfen, mir fehlt noch ein wichtiger Baustein für meine Anwendung.
In einer Tabelle A (n)stehen in einem Datensatz die Datenfeldern Datum1 (MVBeginn) und das Datum2 (MVEnde). Aus einer anderen verknüpften Tabelle B (1) möchte ich über einen Button die bestehenden Nutzungszeiträume in dem jeweiligen Abrechnungsjahr ermitteln. Zur Zeit gebe ich die Nutzungszeiträume über „manuelle Einträge“ vor und verwende folgenden Code.

let myID := Nr;
let myJAHR := max(Betriebskostenabrechnung.Jahr) + 1;
let myABR := (create Betriebskostenabrechnung);
myABR.(Abrechnungseinheit := myID);
myABR.(Jahr := myJAHR);
myABR.(Abrechnungsbeginn := date(Jahr, 1, 1));
myABR.(Abrechnungsende := date(Jahr, 12, 31));
for i in select “Nutzungszeiträume” where Nutzungsjahr = myJAHR do
            let myMIET := (create Mieter);
            myMIET.(Abrechnung := myABR.Nr);
            myMIET.(Mieter := i.Mietvertragspartner);
            myMIET.(
                        “Mietfläche” := i.Vertrag.Mieteinheiten.“MV Wohnfläche”;
                        myMIET.(Bezeichnung := i.Vertrag.Mieteinheiten.Bezeichnung);
                        myMIET.(“Etage/Lage” := i.Vertrag.Mieteinheiten.text(“Etage/Lage”));
                        myMIET.(“Nutzung von” := i.Nutzungsbeginn);
                        myMIET.(“Nutzung bis” := i.Nutzungsende);
.
.
.
End
Gerne würde ich die Ermittlung der Nutzungszeiträume automatisch ermitteln.
In das Feld Mietvertragsende könnte ich ein zukünftiges Datum eingeben z.B. 31.12.2999.

Die Variable myJAHR müsste die Daten Datum 1 und 2 abprüfen, um dann den NBeginn und das NEnde zu ermitteln und ausweisen.
Die Datumsfelder könnte ich nach dd, mm, yyyy aufsplitten.

Folgende Fälle müssten geprüft werden.  

 

Hat jemand eine Idee?

Grüße Nikotomato

4 Antworten

null
    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Nikotomato,

    Verstehe ich es richtig: du möchtest diese Formel auf gesamte Nutzungdzeit ausweiten?
    Wenn es man bei Datum 1 un Datum 2 immer um volle Jahre handelt dann kann man volgendes schreiben:

    ---

    let me:=this;
    var myJAHR :=me.year(MVBeginn);
    while myJAHR<=me.year(MVEnde) then
    .
    .
    .

    myJAHR:=myJAHR+1
    end

    ---

    so kannst du alle Jahre berücksichtigen

     

    Leo

    • Nikotomato
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Leo, vielen Dank. Prbiere mich besser auszudrücken. In einer Haupttabelle “Mietermangement” gibt es die Felder MVBeginn und MVEnde. Es handelt sich hier um Datumsfelder, keine vollen Jahre. In einer anderen Hauptabelle “Abrechnungseinheit” soll über einen Button in einer Untertabelle “Betriebskostenabrechnung” zuerst einmal ein Datensatz je Jahr erstellt werden. Mit diesem Code:

    let myID := Nr;
    let myJAHR := max(Betriebskostenabrechnung.Jahr) + 1;
    let myABR := (create Betriebskostenabrechnung);
    myABR.(Abrechnungseinheit := myID);
    myABR.(Jahr := myJAHR);
    myABR.(Abrechnungsbeginn := date(Jahr, 1, 1));
    myABR.(Abrechnungsende := date(Jahr, 12, 31));

    Nun möchte ich Datensätze in einer Untertabelle “Nutzungen”, gehört zur Haupttabelle Mietermangement, erzeugen. Hierzu sollen die hierin bestehenden Datumsfelder NBeginn und NEnde, in Abhängigkeit von den Felder MVBeginn und MVEnde der Tabelle (Mietermangement) gefüllt werden. Diese Abfragen erfordern müssen viele Bedingungen berücksichtigen. Zum Beispiel, Fall1: Wenn MVEnde = myJAHR und MVBeginn < myJAHR, dann NBeginn = 01.01.myJAHR, NEnde = MVEnde.

    Hierzu habe ich keine Ahnung, wie ich dies umsetzen kann.

    Grüße Nikotomato

     

    * Ich kann das eingefügte Bild sehen, aber nach dem Verschicken erscheint ein KAsten mit Fragezeichen? Was muss ich ändern, um ein Bild zu verschicken?

    • Nikotomato
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Ich hätte es mir ungefähr so vorgestellt. Klappt aber nicht. Leo, mit deinen Angaben komme ich irgendiwe nicht weiter.

    et myID := Nr;
    let myJAHR := max(“BK-Abrechnung”.Jahr) + 1;
    let myABR := (create “BK-Abrechnung”);
    myABR.(Abrechnungseinheit := myID);
    myABR.(Jahr := myJAHR);
    myABR.(Abrechnungsbeginn := date(Jahr, 1, 1));
    myABR.(Abrechnungsende := date(Jahr, 12, 31));
    let me := this;
    let myMIET := first(select Mietermangement);
    var myMVBJAHR := myMIET.year(MVBeginn);
    var myMVEJAHR := myMIET.year(MVEnde);
    for h in select Mietermangement where myMVEJAHR = myJAHR and myJAHR > myMVBJAHR do
    let myNutz := (create Nutzungen);
    myNutz.(NUBeginn := date(myJAHR, 1, 1));
    myNutz.(NUEnde := date(myMVEJAHR));
    for i in select Mietermangement where myMVEJAHR = myJAHR and myJAHR = myMVBJAHR do
    let myNutz := (create Nutzungen);
    myNutz.(NUBeginn := date(myMVBJAHR));
    myNutz.(NUEnde := date(myMVEJAHR))
    end
    end

    • info.51
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo Nikotomato

    habe Deine Frage hier gelesen. Bin interessiert an Deine Datenbank

    würdest Du sie mir auch überlassen? Wäre wirklich toll wenn Du mir

    eine Kopie davon zusenden kannst.

    Schöne Grüße

    Werner

Content aside

  • vor 1 JahrZuletzt aktiv
  • 4Antworten
  • 568Ansichten
  • 1 Folge bereits