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
39 Antworten
-
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. ;)
-
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 -
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.
-
Danke aber was ist ein Dashboard bzw eine Administrationstabelle?
-
Das sind Tabellen, die keine Unternehmensdaten enthalten, sondern allgemeine Funktionen zur Steuerung der DB. So bauen sich viele Nutzer bspw. gerne ein sogenanntes Dashboard als Startseite, um dort wichtige Informationen aus verschiedenen Tabellen anzeigen zu lassen: Die nächsten Termine, aktuelle Projektstände, offene Rechnungen, Statistiken usw. Oder eben Funktionen zur “Wartung” der DB wie bspw. so eine Schaltfläche zum Löschen von Terminen in bestimmten Zeiträumen. Oder zum Suchen und Entfernen leerer Datensätze, Parameter für Integrationen usw. usf.
Solche Tabellen enthalten oft nur einen Datensatz als Formularansicht, auf der dann die verschiedenen Ansichten, Schaltflächen und Funktionen platziert werden.
-
Glaube ich hab es hinbekommen
Hab ne neue Tabelle in der Datenbank erstellt (Name Dashboard)mit ansicht Formularansicht. In dieser eine Verknüpfung mit der Tabelle Einzeltermine1, ein Von_Datum und ein Bis_Datum Feld erstellt und einen Befehlsbutton mit dem Code. Musste dann nur noch - select Einzeltermine - mit - select Einzeltermine1 - ersetzen und es hat geklappt.Was bedeuted eigentlich myZ? Wird darüber gezählt, wieviele Einträge gelöscht werden? Könnte ich darüber theoretisch auch schon vor der Löschung im dialog anzeigen, wieviele Termine von der Löschung betroffen sein werden? Also quasi “Sollen wirklich alle ”myZ“ Termine im angegebenen Zeitraum gelöscht werden?” Müsste den Zählprozess dann natürlich vorher schon starten ohne zu löschen.
Also quasi so:
let vDat := Von_Datum;
let bDat := Bis_Datum;
let myZ := 0;
for myRecord in (select Einzeltermine1)[date(start(Termin)) >= vDat and date(start(Termin)) <= bDat] do
cnt myRecord;
myZ := myZ + 1
end;
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 Einzeltermine1)[date(start(Termin)) >= vDat and date(start(Termin)) <= bDat] do
delete myRecord;
myZ := myZ + 1
end;
alert(text(myZ) + “ Termine gelöscht!”)
end
end
else
alert(“Bitte Von- und Bis-Datum angeben!”)
enddo cnt ist aber wohl nicht richtig. Er meint die Tabellenspalte cnt würde nicht gefunden.
Mein nächstes Projekt wäre dann eine (oder auch alle mit select) Terminserie auf ein neues Datum zu kopieren.
Also z.B. Alle Unterrichttermine (Einzeltermine) enden am 31.12.20 und jetzt möchte ich neue Serien erstellen mit den selben Uhrzeiten und Wochentagen ab dem 14.01.21.
Wie nennt sich die Code-Sprache von Ninox eigentlich? Ist das SQL-Code? Und gibt es irgendwo eine zusammenstellung der Befehle (Syntax)? -
Ja, die Variable “myZ” diente lediglich dem Zählen der Schleifendurchläufe (= Anzahl gelöschter Datensätze). Das “cnt” kann direkt auf das “select” angewandt werden. Wie übrigens auch das “delete”, dann spart man sich die Schleife:
if Von_Datum and Bis_Datum then
let vDat := Von_Datum;
let bDat := Bis_Datum;
let myZ := cnt((select Einzeltermine)[date(start(Termin)) >= vDat and date(start(Termin)) <= bDat]);
if dialog(“Bitte bestätigen”, “Sollen ” + myZ + “ Termine im angegebenen Zeitraum gelöscht werden?”, [“Ja”, “Abbrechen”]) = “Ja” then
delete (select Einzeltermine)[date(start(Termin)) >= vDat and date(start(Termin)) <= bDat];
alert(myZ + “ Datensätze gelöscht”)
end
else
alert(“Bitte Von- und Bis-Datum angeben!”)
end
-
Ach so, nein, das ist kein SQL-Code. In der Doku wird die Ninox-Skriptsprache “NX” genannt. Eine Übersicht der Funktionen gibt es hier: https://ninox.com/de/manual/erweiterte-Berechnungen/funktions-und-sprachreferenz
Außerdem findet sich im Webinar-Team eine Referenz-Datenbank mit Kurzbeschreibungen und Anwendungsbeispielen.
-
Vielen Dank. Dann wurstel ich zuerst mal selbst.
Wie komm ich da rein? Ich find zu Webinar nur Offene Sprechstunde, Handwerker-App, Stammtisch und Ninox Partner (englisch). Zu welchem müsste ich mich da anmelden? -
Schreibe einfach eine Mail an den Support mit der Bitte um Aufnahme in das Team “Webinar DE 2000”. Für die Einladung wird die E-Mail-Adresse deines Ninox-Accounts benötigt.
-
Ähm, das Team heißt natürlich “Webinar DE 2020” ...
-
Danke
-
Hallo Copytexter,
auch ich würde gerne wiederkehrende Termine in meiner Datenbank erstellen (Taxiunternehmen), und zwar monatlich oder wöchentlich für drei Fahrer...wie muss ich das angehen und kann ich auch belegte Termine als "nicht verfügbar" kennzeichnen, wenn ich einen neuen Datensatz anlege? Die wiederkehrenden Termine sollen ebenfalls optional sein. Vielen Dank,
Markus
-
Hallo Markus, so pauschal lässt sich das schwer sagen. Auf den vorhergehenden Seiten findest du ja schon einigen Input zum Thema "Wiederkehrende Termine". Eröffne doch am besten einen neuen Thread und beschreibe dort etwas genauer, wie dein Datenmodell aussieht, was genau du machen willst und an welcher Stelle du nicht weiterkommst.
Content aside
- vor 8 MonatenZuletzt aktiv
- 39Antworten
- 3983Ansichten
-
2
Folge bereits