Berechnung nach Import ausführen
Für einen Kalendereintrag muss eine Berechnung durchgeführt werden für die Dauer des Eitnrages. Das habe ich wie hier besprochen gelöst:
Nun habe ich per csv-import Datensätze importiert, diese tauchen allerdings nicht im Kalender auf, da keine Berechnungen angestoßen zu werden scheinen wenn man Datensätze importiert. Kann ich das irgendwie manuell auslösen?
8 Antworten
-
Ich würde mir irgendwo eine Button machen und dann:
for p in select DeineTabelle do
und hier deine Berechnung, sowas wie p.Datum := yyyyy
end -
Ja, genau, Button und Schleife. Ich hab's jetzt nicht gestestet - also wie immer ohne Gewähr! -, aber eigentlich sollte derselbe Code funktionieren wie "Nach Änderungen" im Feld STARTDATUM, nur eben mit der Schleifenvariable davor:
for i in select TABELLE do
if i.STARTDATUM then
if not i.ENDDATUM then
i.ENDDATUM := i.STARTDATUM
end
i.TERMINFELD := appointment(i.STARTDATUM, i.ENDDATUM + time(23, 59))
else
i.TERMINFELD := null
end
end
Wenn sich die neu importierten Datensätze irgendwie von den vorhandenen unterscheiden, dann könnte man beim "select" auch einen entsprechenden Filter setzen, damit auch nur die neuen verarbeitet werden.
-
Und das muss ich dann aber bei jedem Datensatz manuell ausführen?
-
Nein, nur einmal nach jedem Import. Dann wird die gesamte Tabelle durchlaufen (for i ...) und jeder Datensatz auf dieselbe Weise überprüft und ggf. der Termineintrag berechnet wie in dem von dir oben verlinkten Script.
-
Super, das teste ich und werde berichten. Vielen Dank!
-
Ich hab's an meine Variablen angepasst, irgendeine Kleinigkeit felht aber nocht, es weird ein "end in Zeile 6 Spalte 9" erwartet?
for i in select Events do
if i.'Datum des Events' then
if not i.Enddatum then
i.Enddatum := i.'Datum des Events'
end
i.Kalendertermin := appointment(i.'Datum des Events', i.Enddatum + time(23, 59))
else
i.Kalendertermin := null
end
end -
Bei dieser Meldung fehlt zumeist in der Zeile davor ein Semikolon. Wenn nach einem "end" weitere Befehlszeilen folgen, muss auch das "end" mit einem Semikolon abgeschlossen werden. Also auch in Zeile 9.
for i in select Events do
if i.'Datum des Events' then
if not i.Enddatum then
i.Enddatum := i.'Datum des Events'
end;
i.Kalendertermin := appointment(i.'Datum des Events', i.Enddatum + time(23, 59))
else
i.Kalendertermin := null
end;
end
-
Das wars, hat geklappt. Toll, vielen Dank mal wieder! :-)
Content aside
- vor 5 JahrenZuletzt aktiv
- 8Antworten
- 1685Ansichten