0

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:

https://ninoxdb.de/de/forum/technische-hilfe-5ab8fe445fe2b42b7dd39ee8/kalender-dauer-des-kalendereintrags-mittels-start-und-enddatum-berechnen-5de4cb75e2f9823d52881b5c

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

null
    • pbosch
    • vor 5 Jahren
    • Gemeldet - anzeigen

    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

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

    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.

    • Böhm & Herold GbR Fotoautomat Berlin
    • Sebastian_Bohm
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Und das muss ich dann aber bei jedem Datensatz manuell ausführen?

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

    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.

    • Böhm & Herold GbR Fotoautomat Berlin
    • Sebastian_Bohm
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Super, das teste ich und werde berichten. Vielen Dank!

    • Böhm & Herold GbR Fotoautomat Berlin
    • Sebastian_Bohm
    • vor 5 Jahren
    • Gemeldet - anzeigen

    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

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

    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

    • Böhm & Herold GbR Fotoautomat Berlin
    • Sebastian_Bohm
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Das wars, hat geklappt. Toll, vielen Dank mal wieder! :-)