Wie kann ich via einem Button ein Datum plus zB 1 Monat, 6 Monate...usw in einen neuen Datensatz übernehmen?
Hallo zusammen,
ich komme mal wieder nicht weiter und brauche bitte eure Hilfe.
Ich habe eine HauptTabelle Mietverträge mit Untertabelle Mietvertragspositionen.
Mit einem Button generiere ich eine neuen Datensatz und übernehme alle Felder, inkl. die der Untertabelle (hier nur ein Auszug):
let myMV := this;
let newMV := (create 'Mietverträge');
newMV.(
Erstellungsdatum := today();
for i in myMV.Mietvertragspositionen do
let newMV_Pos := (create Mietvertragspositionen);
newMV_Pos.(
'Mietverträge' := newMV;
Mietbeginn := i.Mietbeginn;
Mietende := i.Mietende;
)
end
);
popupRecord(newMV)
Soweit funktioniert alles so, wie es soll.
Nun möchte ich gerne einen Mietvertrag 'verlängern'
In Tabelle 'Mietverträge' habe ich nun zusätzlich ein Auswahlfeld (1 Monat, 3 Monate, 6 Monate, 1 Jahr)
Wie bekomme ich es hin, dass je nach Auswahl, sich das Datum (Mietbeginn und Mietende in der Untertabelle) um 1 Monat, 3 Monate, 6 Monate, 1 Jahr verändert?
Ich bedanke mich schon mal vorab für eure Hilfe.
Gruß Kruna
7 Antworten
-
Eine Möglichkeit das zu erreichen:
1. Das Datum in Tag,Monat,Jahr aufsplitten. Funktionen day(), month(), year().
2. Die entsprechende Position um den ausgewählten Wert addieren.
3. Das Datum mit date() wieder zusammenbaut -
Bsp.
let vAddition := 2;
date(year(today()), month(today()) + vAddition, day(today()))
Ergibt das heutige Datum, um 2 Monate erhöht.
-
Hallo Uwe,
vielen Dank für Deinen Ansatz. So in etwa hatte ich es versucht, aber irgendwie bekomme ich es nicht zusammen. Wo und wie gebe ich das alles ein?
Mietende := i.Mietende = date(year(Mietende+1), month(Mietende), day(Mietende);
oder so ähnlich, hat nicht funktioniert. Habe dann ein wenig herumprobiert, leider eben ohne Erfolg. Des weiteren müsste ich ja noch irgendwie
Switch Auswahl do
case 1:
case 2:
....usw. mit einbinden oder? Auch da hänge ich fest und weiß nicht so recht wo und wie genau das Script lauten müsste.
Gruß Kruna
-
Mietende := date(year(i.Mietende+1), month(i.Mietende), day(i.Mietende));
-
HAllo Uwe,
ich habe den Code gerade eingesetzt, leider passiert nichts bzw. erhöht sich das Datum nicht um 1 Jahr.
Was könnte ich bloß falsch gemacht haben?
Gruß Kruna
-
Habe die DB schnell mal nachgebaut inkl. Auswahlfeld:
if 'Verlängerungszeitraum' then
let vAddition := 0;
switch number('Verlängerungszeitraum') do
case 1:
(vAddition := 1)
case 2:
(vAddition := 3)
case 3:
(vAddition := 6)
case 4:
(vAddition := 12)
end;
let myMV := this;
let newMV := (create 'Mietverträge');
newMV.(
Erstellungsdatum := today();
for i in myMV.Mietvertragspositionen do
let newMV_Pos := (create Mietvertragspositionen);
newMV_Pos.(
'Mietverträge' := newMV;
Mietbeginn := date(year(i.Mietbeginn), month(i.Mietbeginn) + vAddition, day(i.Mietbeginn));
Mietende := date(year(i.Mietende), month(i.Mietende) + vAddition, day(i.Mietende))
)
end
);
popupRecord(newMV)
endDer code funktioniert und erhöht das Datum um die entsprechende Anzahl der Monate. (1Jahr = +12 Monate)
Er wird immer auf alle Positionen der Untertabelle angewandt und kann so nicht selektiv genutzt werden.
-
Guten morgen Uwe,
das ist ja irre!!!! Ich kann mich nicht oft genug bedanken!! Ich kann mir auch nicht erklären, warum das bei mir nicht funktioniert hat.
Wie dem auch sei, vielen, vielen Dank für Deine Mühe und tolle Hilfe, dadurch bin ich mit meiner DB wieder ein großes Stück weitergekommen.
Wünsche noch einen schönen Tag,
Gruß Kruna
Content aside
- vor 2 JahrenZuletzt aktiv
- 7Antworten
- 290Ansichten