0

Wiederkehrende Termine erstellen

Hallo zusammen,

als Neuling möchte ich einmal ganz doof fragen:
Bisher habe ich es nur geschafft, einzelne Termine zu erstellen. Wie schaffe ich es, dass ein Termin wiederkehrend erscheint, also z.B. jede Woche am selben Wochentag und zur selben Zeit? Vielen Dank! LG, Alex

36 Antworten

null
    • Ninox-Professional
    • planoxpro
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Alex, die Frage ist keineswegs doof. Wiederkehrende Termine zu erstellen, ist natürlich möglich, aber Ninox ist halt keine Kalendersoftware, sondern eine Datenbank. Man kann Termine also nicht ohne weiteres als "unendlich" wiederkehrend eintragen, sondern muss für jeden Termin einen Datensatz erstellen. Das lässt sich automatisieren, in dem man angibt, wie oft oder bis zu welchem Datum ein Termin wiederholt werden soll.

    Dazu braucht es allerdings etwas Code. Um dir also konkret weiterhelfen zu können, müsste man etwas mehr über den Zweck der Anwendung wissen. Zum Beispiel: Gibt es ein festes Schema für alle Termine oder soll die Wiederholung als Option verfügbar sein? Geht es um eine bestimmte Anzahl von Wiederholungen oder sollen sie in einem bestimmten Zeitraum wiederholt werden?

    • Alexander_Michaelis
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hey Copytexter! Erstmal vielen Dank, dass du dir die Mühe machst!

    Für die Termine gibt es ein festes Schema. Das Schema wird in aller Regel wöchentlich, in Ausnahmefällen zweiwöchtentlich sein. Es gibt auch Situationen, bei denen es zwei Mal pro Woche einen festen Termin in genanntem Rhythmus gibt. Die Termine finden immer zur selben Zeit, am selben Tag statt. Es kann aber vorkommen, dass man den Tag und/oder die Zeit ändern muss, in dem Fall sollten sich aber alle Folgetermine ändern. Die Wiederholungen sind unbestimmt, manchmal ist nach 5 Terminen Schluss, mal nach einem (Schul)Jahr. Dies ist vorher nicht genau festzulegen, da es keine Vertragslaufzeit gibt. Wird der Vertrag gekündigt, entfallen auch die weiteren Termine. Ich denke es macht Sinn, die regulären Termine außerhalb der Schulferien, also im Intervall "Ferienende" -> "Ferienanfang" anzulegen. In den Schulferien werden neue, seperate Termine vergeben.

    • Alexander_Michaelis
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Ergänzung: Die Termine sind meistens ein Mal pro Woche! Wichtig ist auch die Dauer: Manche Termine dauern 45 Minuten, manche 90 Minuten, seltener auch 60 Minuten.

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

    Hallo Alex, das wird wohl doch etwas komplexer. Grundsätzlich kein Problem, aber das bekomme ich nicht so auf die Schnelle hin. Und da ich gerade anderweitig eingespannt bin, werde ich mir das später noch mal in Ruhe ansehen (wenn bis dahin niemand anderes eine Lösung zeigt).

    Um sicher zu gehen, dass ich die Anforderungen richtig verstanden habe, fasse ich sie aber vorab noch mal zusammen:

    - Zu einem Anlass (Kunde, Event o. ä.) kann es mehr als einen Wochentagstermin geben.
    - Terminwiederholungen sollen ggf. nach Anzahl (x mal) oder Zeitraum (bis Datum) berechnet werden.
    - Die Termindauer kann 45, 60 oder 90 Minuten betragen (ist innerhalb einer Terminserie aber gleich).
    - Die Termine sollen auch im Ninox-Kalender angezeigt werden.
    - Wenn man einen Termin ändert (z. B. Uhrzeit), sollen automatisch auch die Folgetermine angepasst werden.
    - Bereits erstellte, zukünftige Termine sollen ab einem bestimmten Datum gelöscht werden können.

    Ach so, und ... Auf welcher Plattform soll die Lösung laufen: App (Mac/iPad) und/oder Cloud?

    • Alexander_Michaelis
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hi , wow! Genauso sieht es aus! Danke!

    Es gibt bisher einen fest installierten Windows-10-PC (später werden es mehrere sein), zu dem mehrere Benutzer Zugriff haben, um mit der Datenbank zu arbeiten. Im Home-Office nutze ich dagegen einen Mac. Auf einem Tablet/Handy wäre die Anwendung weniger wichtig, obwohl es praktisch sein kann, mobil die Daten einsehen zu können, wenn man nicht vor Ort ist.

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

    Hallo Alex, es war einfacher, schnell eine kleine Datenbank zu erstellen, als hier lange Erklärungen zu formulieren. Du kannst sie hier herunterladen:

    https://www.dropbox.com/s/ncgxgd9ayl7jxbc/Serientermine.ninox?dl=0

     

    Die Terminierung habe ich mit zwei Tabellen umgesetzt: Eine zum anlegen der Terminserien und als Untertabelle die einzelnen Termine, welche auch im Kalender angezeigt werden. Ausgangspunkt ist die Tabelle "Teilnehmer".

    Ist nur ein einfacher Lösungsansatz zum Erstellen und Löschen von Terminen. Es gäbe da noch viele Optionen und Eventualitäten, aber vielleicht hilft die DB ja schon mal weiter.

     

    NX_Serientermine01

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

    PS: Man kann entweder "Anzahl" oder "Bis_Datum" eingeben, das jeweils andere Feld wird automatisch berechnet.

    • Alexander_Michaelis
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Copytexter, vielen vielen Dank! Ich arbeite zurzeit online mit der Tabelle als kostenlose Testversion, wenn ich versuche, die Ninox Datei hochzuladen, spuckt er mir nur seltsame Symbole aus. Der Import verlangt nach einer CSV-Datei :/

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

    Hallo Alex, auf welche Weise hast du denn versucht, die Datei zu importieren? Direkt in deine Datenbank? Das geht nicht, bei dem Download handelt es sich um eine eigenständige Ninox-Datenbank. Die kann man auf der Teamseite mit der Übersicht aller Datenbanken als "Archiv importieren" (Schaltfläche unten zwischen "Neue Datenbank" und "Backups verwalten". Das müsste m. W. auch mit der Testversion funktionieren.

    • Alexander_Michaelis
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Jetzt hat es geklappt! Ich bin dir wirklich dankbar, es ist genau das, was wir brauchen, du hast uns sehr geholfen!

    • Alexander_Michaelis
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Eine Sache wäre aber noch interessant: Kann man die Termine zusätzlich mit dem jeweiligen Raum (Nr 1,2,3) verknüpfen, in dem der Termin stattfindet? Und wenn ja, kann man den jeweiligen Raum mit einer bestimmten Farbe im Kalender anzeigen lassen? LG

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

    Hallo Alex, für die Berücksichtigung des Raumes gibt es zwei Möglichkeiten. Die einfache: Man nimmt die Raumnummer bzw. -bezeichnung einfach als zusätzliches Text- oder Auswahlfeld in die Tabelle 'Terminserien'. So, wie das Feld 'Art'.

    Da du aber von "Verknüpfung" sprichst, hast du die Räume wahrscheinlich in einer eigenen Tabelle gespeichert und willst diese nun auch technisch gesehen mit der Tabelle 'Terminserien' verknüpfen. Das ist die andere Möglichkeit. 

    Das mit den unterschiedlichen Farben im Kalender geht auch. Mit etwas Code unter "Anzeigen als" im Feld 'Termin' der Tabelle 'Einzeltermine'. Ich habe das am Beispiel der Verknüpfung zu den Räumen mal umgesetzt und die Datenbank aktualisiert. Wie du sie bei dir importieren kannst, weißt du ja jetzt:

    https://www.dropbox.com/s/5aef8nzp0y2nfgr/Serientermine_V2.ninox?dl=0

     

    NX_Serientermine02

    • Alexander_Michaelis
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Es funktioniert alles perfekt danke danke danke!

    Eine letzte Sache: Ich habe ja nun die Teilnehmer in einer eigenen Tabelle. Zu jedem Teilnehmer möchte ich für jeden Termin ein Protokoll mit dem Stundeninhalt anfertigen können. Kann man die einzelnen Teilnehmer aus einer Drop-Down-Liste schnell auswählen? Wenn ja, kann man im folgenden Schritt, wenn man den entsprechenden Teilnehmer ausgewählt hat, in ein Textfeld die entsprechenden Notizen einfügen und per Button abspeichern? Der Eintrag sollte auch direkt das Erstellungsdatum und den zuständigen Mitarbeiter mit beinhalten, der den Kunden an diesem Termin betreut hat. Die einzelnen Protokolle sollten dann im selben Fenster in einer Tabelle übersichtlich erscheinen.

    • Alexander_Michaelis
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Also was ich meine ist, dass ich nicht alle Teilnehmer/Kunden neu in ein Auswahlfeld per Hand eintragen muss, sondern dass die in der Tabelle "Teilnehmer" gespeicherten Namen automatisch in eine Drop-Down-Liste übetragen werden.

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

    Nein, Auswahlfelder lassen sich nicht automatisiert mit Einträgen füllen, nur manuell. Das steht schon lange auf der Wunschliste und soll auch irgendwann kommen, aktuell geht es aber noch nicht.

    Die "Teilnehmer" in einer eigenen Tabelle zu speichern, war die naheliegendste Lösung. Und in den meisten Fällen ist es auch die sinnvollste, weil bei Kunden, Patienten, Schülern, Klienten usw. in der Regel ja mehr Stammdaten anfallen als nur der Name (Kontaktdaten, Anforderungen, Konditionen etc. pp.). Ich habe aber keinen blassen Schimmer, worum es bei deiner Ninox-Anwendung geht (deshalb auch die neutrale Bezeichnung als Termin-"Teilnehmer"). 

    Auswahlfelder sind im Grunde dazu gedacht, immer wiederkehrende Inhalte schnell abrufen zu können, ohne sie jedesmal wieder neu eintippen zu müssen. Der Klassiker: Ein Statusfeld mit "Geplant", "In Arbeit" und "Erledigt". Oder Anrede: "Frau", "Herr", "Firma" ...

    Solltest du also nur wenige, dauerhafte Teilnehmer haben und zu denen nichts weiter speichern wollen als den Namen, dann könntest du die natürlich auch direkt in Auswahlfelder eintippen statt Tabellen zu verknüpfen. Sinnvoll erscheint mir das aus den beschriebenen Gründen aber nicht. Im Zweifelsfall sind Verknüpfungen immer effizienter als Auswahlfelder.

    Und was die Protokolle angeht: Dazu gibt es viele Möglichkeiten. Die einfachste: Zusätzliche Felder in der Tabelle 'Einzeltermine' (siehe Screenshot). Gespeichert wird automatisch, ohne Button.

    Hinsichtlich der Mitarbeiter stellt sich wie bei den Teilnehmern die Frage: Auswahlfeld oder eigene Tabelle? Oder hat jeder Mitarbeiter einen eigenen Account und nimmt den Protokolleintrag selber vor? Dann könnte man auch automatisch den Nutzernamen auslesen.

    Und natürlich könnte man auch die Protokolle wieder in einer eigenen Tabelle speichern, ob das aber sinnvoll ist, kann ich mangels Kontext nicht beurteilen. Dazu wäre dann doch etwas mehr Input erforderlich.

     

    NX_Serientermine03

    • Alexander_Michaelis
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Ok danke dir! Ich denke, dass die Mitarbeiter keine eigenen Accounts haben werden, d.h. da werde ich mich für Auswahlfelder entscheiden mit manuellem Eintrag. Bei den Protokollen lege ich eine eigene Tabelle an und verknüpfe diese mit dem Kundendatenblatt, oder ich ergänze wahlweise den Einzeltermin-Eintrag.

    Wie hast du eigentlich den zeitstempel erstellen lassen?

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

    Es gibt Ninox-interne Protokollfelder, die man in einem eigenen Funktonsfeld nutzen kann:

     

    _cd (als Kurzform für 'Erstellt am')
    _cu ('Erstellt von')
    _md ('Zuletzt geändert am')
    _mu ('Zuletzt geändert von')

     

    Das heißt, ich habe nur ein Funktionsfeld namens 'Letzte Änderung' erstellt und dort bei Funktion "_md" eingetragen. Im Funktionsfeld 'Durch' steht als Funktion "_mu". Immer, wenn eine wie auch immer geartete Änderung an dem Datensatz vorgenommen wird, werden die Werte automatisch aktualisiert.

    • Alexander_Michaelis
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hat sich erledigt mit dem Zeitstempe, habe einen anderen Beitrag von dir entdeckt :P

    Aber was anderes: Wie kann ich mittels eines Buttons "Fertig" den Protokolleintrag dahin gehend prüfen, ob die notwendigen Felder (also Stundeninhalt, Mitarbeiter usw.) ausgefüllt wurden? Ein Klick auf den Button soll mir also einen Dialog auswerfen der mir entweder anzeigt a) Es wurden noch nicht alle Felder ausgefüllt -> zurück bzw. Dialog schließen   und sonst im Fall, dass alles ausgefüllt wurde b) das Protokollfenster wird geschlossen

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

    Für Benutzerdialoge gibt es die Funktionen alert() und dialog(). Ob Felder einen Inhalt haben, kann man mit "if FELD != null" oder verkürzt mit "if FELD" abfragen. Als Beispiel:

    if FELD1 and FELD2 and FELD3 then
        alert("Alles in Ordnung")
    else
        alert("Es wurden nicht alle Felder ausgefüllt!")
    end

    Will man verschiedene Antwortmöglichkeiten vorgeben und auswerten, dann bietet sich statt alert() die Funktion dialog() an.

    dialog(Titel, Meldung, AntwortArray)

    Die Funktion gibt dann den geklickten Button als Textwert zurück, den man bspw. so abfragen kann:

    let myResonse := dialog("Achtung", "Es wurden nicht alle Felder ausgefüllt! Trotzdem fortfahren?", ["Ja", "Nein"]);
    if myResponse := "Ja" then
        MACHDIES
        TUJENES
    end

     

    Hat der Nutzer auf "Nein" geklickt, passiert halt gar nichts weiter. alert() und dialog() funktionieren in der Cloud aber nur mit Schaltflächen, nicht in Triggern und Funktionen.

    Hier gibt es einen älteren Thread mit einer kurzen Erläuterung der dialog()-Funktion:
    https://ninox.com/en/forum/technische-hilfe-5ab8fe445fe2b42b7dd39ee8/die-neue-funktion-dialog-5b5ecc8a615501550d8cbd36

    • Siskokeys
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Copytexter,
    ich hab deinen Serientermine_V2 in eine Klavierschülerdatenbank eingebaut, was super funktioniert hat.
    Nun würde ich gerne bei dem Button “Termine löschen” das so ändern, dass nicht alle Termine ab heute sondern alle Termine zwischen “Startdatum” und “Bis_Datum” gelöscht werden. Hast Du mir nen Tip, wie ich das hinbekommen könnte?

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

    Das heißt, du willst die Felder “Startdatum” und/ oder “Bis_Datum” manuell ändern und als Zeitraum nehmen, in dem alle Termine gelöscht werden sollen? Wenn ich es richtig sehe (ist ja schon ein bisschen her), dann müsste man nur den Filter in der “for”-Schleife anpassen (und vorher die von-/bis-Daten einlesen). Das sähe dann so aus:

     

    let sDat := Startdatum;
    let bDat := Bis_Datum;
    if dialog(“Bitte bestätigen”, “Sollen wirklich alle zukünftigen Termine dieser Serie gelöscht werden?”, [“Ja”, “Abbrechen”]) = “Ja” then
        let myZ := 0;
        for myRecord in Einzeltermine_[date(start(Termin)) >= sDat and date(start(Termin)) <= bDat] do
            delete myRecord;
            myZ := myZ + 1
        end;
        alert(text(myZ) + “ Termine gelöscht!”);
        Gesperrt := false
    end

     

    Wobei man natürlich auch andere Datumsfelder für sDat und bDat nehmen könnte.

     

    Aber wie immer alles ohne Gewähr. Also bitte erst mal mit Demodaten testen.

    • Thomas_Konradt
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Axel,

    da könnte man doch jetzt noch ein Auswahlfeld mit täglich, wöchentlich etc einbauen und mit der Switch Funktion das Ganze universeller gestalten oder? Muss ich mal probieren.

    Gruß

    Thomas

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

    Hi Thomas, klar, mit zusätzlichen Optionen könnte man die Termingenerierung flexibler gestalten. Die DB war halt auf das konkrete Problem des Fragestellers zugeschnitten, darf aber gerne als Basis für weitergehende Experimente genutzt werden. ;)

    • Siskokeys
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Zuerst mal vielen Dank. Das hat wunderbar geklappt und ich bin als Laie schon fast stolz, dass ich verstanden habe, warum Dein Code funktioniert und meine Versuche das nicht getan haben 😊. Hab mir einen neuen Befehlsbutton mit der Terminlöschung von-bis gemacht, der den ursprünglichen Termine löschen nicht wieder in Termine eintragen ändert.

    Kleine Frage noch hierzu: beim Code kopieren hat sich herausgestellt, dass die Anführungszeichen in Deinem Code nicht gepasst haben. Ich konnte optisch zwar keinen Unterschied feststellen, jedoch waren es wohl die, die durch “Alt 2” auf der Mac Tastatur erzeugt werden. Hab sie ersetzt mit “Shift 2” dann hat es funktioniert. Ist das ein normal, oder kann ich dieses Verhalten ändern?

    Nun wäre es natürlich ganz super, wenn ich das “Termine löschen von bis” auf mehrere Terminserien bzw. deren Einzelterminen anwenden könnte.
    Konkret: Ich hab eine Kontakttabelle mit ca. 30 Schülern, die wöchentlich Unterricht haben. Diese Termine werden durch die Terminserientabelle gesetzt (für jeden Schüler einzeln, da ja jeder verschiedene Einträge für Wochentag und Uhrzeit hat. Nun kommen 2 Wochen Weihnachtsferien und ich würde gerne alle Termine aller Schüler in diesem Zeitraum löschen. 
    Gruß Uwe

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

    Hallo Uwe, ja, das ist das Tolle an Ninox: Man hat schnell Erfolgserlebnisse! ;)

    Das Problem mit der Umformatierung der Anführungszeichen ist (hoffentlich) nur ein kurzzeitiges, serverseitiges. Ninox arbeitet wohl schon daran. Bis das Problem behoben ist, muss man die Anführungszeichen leider manuell korrigieren.

    Zur DB: Wenn man teilnehmerübergreifend alle Termine in einem bestimmten Zeitraum löschen will, dann kann man in der “for”-Schleife mit “select” auf die gesamte Tabelle zugreifen (statt wie oben nur auf die verknüpften Datensätze):

    if Von_Datum and Bis_Datum then
        let vDat := Von_Datum;
        let bDat := Bis_Datum;
        if dialog(“Bitte bestätigen”, “Sollen wirklich alle Termine im angegebenen Zeitraum gelöscht werden?”, [“Ja”, “Abbrechen”]) = “Ja” then
            let myZ := 0;
            for myRecord in (select Einzeltermine)[date(start(Termin)) >= vDat and date(start(Termin)) <= bDat] do
                delete myRecord;
                myZ := myZ + 1
            end;
            alert(text(myZ) + “ Termine gelöscht!”)
        end
    else
        alert(“Bitte Von- und Bis-Datum angeben!”)
    end

    Die Schaltfläche mit diesem Script kann man an beliebiger Stelle in der DB platzieren. Zum Beispiel auch in einem Dashboard oder einer Adminstrationstabelle.

Content aside

  • vor 3 JahrenZuletzt aktiv
  • 36Antworten
  • 3742Ansichten