0
Text- und Datumsfunktionen
Hallo,
ich habe lange gesucht um eine einfach zu konfigurierende Datenbank zu finden. Super Arbeit.
Ich bräuchte jedoch noch eine Wochenauswertung (Gruppierung) Jahr/Woche(Datum) wäre das möglich noch zu ergänzen?
Besten Dank
MfG
Jens
ich habe lange gesucht um eine einfach zu konfigurierende Datenbank zu finden. Super Arbeit.
Ich bräuchte jedoch noch eine Wochenauswertung (Gruppierung) Jahr/Woche(Datum) wäre das möglich noch zu ergänzen?
Besten Dank
MfG
Jens
254 Antworten
-
Danke!
-
Jetzt hätte ich doch noch eine Frage: Die Formel gibt mir immer den Zahlrhythmus bezogen auf als aktuelle Datum aus: Also Datum = Heute + Monate...
Aber besteht auch die Möglichkeit einer Formel wie folgt.
Startdatum: 01.01.2017; Zahlrhythmus: alle 3 Monate
nächste Fälligkeit wäre somit ab heute (08.12.2017) der 01.01.2018 !
Oder wenn der Zahlrhythmus alle 6 Monate wäre, dann wäre es der 01.06.2018
Ich komme einfach auf keine Lösung - vielleicht geht das auch nicht?
Danke nochmals! -
Hallo,
ich bräuchte mal einen Gedankenanstoss.
Ich bin gerade dabei einen Schichtplan zu erstellen für 4 Kolonnen. Die Kolonnen haben ein 3 Schicht System(Tagschicht, Nachtschicht, Freischicht). Die Schichten wechseln alle 3 Tage, so dass immer ein Kolonne eine Tagschicht hat, eine hat Nachtschicht und eine frei.
Die Kolonnen wechseln die Tag u. Nachtschicht immer ab, so dass eine Kolonne 3 Tage Tagschicht, dann 3 Tage frei, dann 3 Tage Nachtschicht hat, dann wieder 3 Tage frei und so weiter...
Das ganze Schichtsysytem läuft für einen Zeitraum vom 1.11 - 31.3.
Nun habe ich eine Tabelle für die Kolonnen, und eine für den Schichtplan.
Der Schichtplan ist eine Untertabelle zu den Kolonnen.
Kann ich die Erstellung des Schichtplans mit einer Formel automatisieren?
Würd ja ungern für 4 Kolonnen jeden einzelnen Tag eintragen müssen. Bei jedem Tag hab ich auch noch 2 Uhrzeitfelder für Start u. Endzeit, diese sollten auch möglichst automatisch befüllt werden.
Hat da jemand eine Idee, wie man das lösen kann, bin mit den Formeln hier noch nicht ganz vertraut.
Grüße
Mirko -
Um den Tag "Heute in 6 Monaten zu ermitteln" hilft folgende Formel:
–––
let myT := today();
date(year(myT), month(myT) + 6, day(myT))
–––
Birger - Ninox Support -
Das hilft nur bedingt weiter, denn hier wird eigentlich ja nur zum heutigen Datum x Monate addiert. Ich möchte, ja den nächsten Fälligkeitstermin in Abhängigkeit des Zahlungsrhythmus. Gibt es hier keine Möglichkeit dies errechnen zu lasen.
Nochmals als Beispiel. Zum 01.03 / 01.06. / 01.09 / 01.12 eine jeden Jahres muss ich meine Zins bezahlen. Heute ist der 15.07. - also wäre meine nächste Zinsfälligkeit der 01.09. !
Danke nochmals fürs mitdenken.
Sabine -
Versuchen Sie folgendes:
–––
let myT := today();
date(year(myT), ceil((month(myT) + 1) / 3) * 3, 1)
–––
Birger - Ninox Support -
Hallo Birger,
vielen Dank für die tolle Formel, das funktionierte im Test auf dem iPad sehr gut.
Er sagt mir hier jetzt hier am Pc, das die Formel keine Datenänderungen vornehmen darf. Ich kann die Formel also leider nicht speichern.
Eine Idee dazu?
Grüße
Mirko -
Schicken Sie mir die PC-Version doch einmal zu (support@ninoxdb.de). Wo wollen Sie die Formel hinterlegen?
Birger - Ninox Support -
Hallo Ninox,
hallo Birger,
wir hatten bereits per Email Kontakt. Allerdings dachte ich, es ist fairer, wenn ich die Frage hier hin schicke, dann hat jeder was davon.
Ich wüsste gerne ob es möglich ist einige Parsing-Aufgaben mit der Skriptsprache zu machen. Die Aufgabenstellung ist eigentlich sehr simpel.
Wir haben jeweils zwei Felder:
Bei der Datenerfassung ist es aber mühsam immer PLZ und Stadt, sowie Straße und Hausnummer getrennt zu erfassen.
Ich wollte daher ein Skript schreiben, das die Hausnummer automatisch aus Straße ausschneidet und in Hausnummer kopiert.
Dasselbe für Die Postleitzahl. Wenn ich PLZ + Stadt einfüge, soll nach dem Trigger die PLZ rausgezogen werden.
Ich habe beim durchsehen der String-Funktionen nichts gefunden, womit ich "Tokenizen" kann. (also z.B. nach einem Leerzeichen ein Substring draus mache).
Da die Sprache ja funktional vollständig ist, habe ich mir mit zwei Hilfsfeldern zwei Register gebaut. Das klappt auch recht gut, erscheint mir aber wenig elegant. Habe ich etwas übersehen? Oder ist das ein Vorschlag für eine neue Funktion?
Hier meine Lösung:
Rechenregister1 := 0;
Rechenregister2 := 0;
for i in range(0, length(Strasse)) do
if substring(Strasse, i, i + 1) = 0 then
if Rechenregister1 = 0 then
Rechenregister1 := i;
Rechenregister2 := i
else
Rechenregister2 := i
end
else
if substring(Strasse, i, i + 1) = 1 then
if Rechenregister1 = 0 then
Rechenregister1 := i;
Rechenregister2 := i
else
Rechenregister2 := i
end
else
if substring(Strasse, i, i + 1) = 2 then
if Rechenregister1 = 0 then
Rechenregister1 := i;
Rechenregister2 := i
else
Rechenregister2 := i
end
else
if substring(Strasse, i, i + 1) = 3 then
if Rechenregister1 = 0 then
Rechenregister1 := i;
Rechenregister2 := i
else
Rechenregister2 := i
end
else
if substring(Strasse, i, i + 1) = 4 then
if Rechenregister1 = 0 then
Rechenregister1 := i;
Rechenregister2 := i
else
Rechenregister2 := i
end
else
if substring(Strasse, i, i + 1) = 5 then
if Rechenregister1 = 0 then
Rechenregister1 := i;
Rechenregister2 := i
else
Rechenregister2 := i
end
else
if substring(Strasse, i, i + 1) = 6 then
if Rechenregister1 = 0 then
Rechenregister1 := i;
Rechenregister2 := i
else
Rechenregister2 := i
end
else
if substring(Strasse, i, i + 1) = 7 then
if Rechenregister1 = 0 then
Rechenregister1 := i;
Rechenregister2 := i
else
Rechenregister2 := i
end
else
if substring(Strasse, i, i + 1) = 8 then
if Rechenregister1 = 0 then
Rechenregister1 := i;
Rechenregister2 := i
else
Rechenregister2 := i
end
else
if substring(Strasse, i, i + 1) = 9 then
if Rechenregister1 = 0 then
Rechenregister1 := i;
Rechenregister2 := i
else
Rechenregister2 := i
end
else
Rechenregister1 := 0;
Rechenregister2 := 0
end
end
end
end
end
end
end
end
end
end
end;
if number(Rechenregister1) > 0 then
Hausnummer := trim(substring(Strasse, number(Rechenregister1), number(Rechenregister2) + 1));
Strasse := trim(substring(Strasse, 0, number(Rechenregister1)) + substring(Strasse, number(Rechenregister2) + 1, length(Strasse)))
end -
Die Kommentarfunktion schneidet offensichtlich spitze Klammern aus.
Ich wollte geschrieben haben:
"Wir haben jeweils zwei Felder:
(Strasse)(Hausnummer)
(PLZ)(Stadt)" -
Hallo!
Irgendwie klappt es mit der Funktion „Teilzeichenkette“ nicht, weder am iPad, noch am Mac. Nach Eingabe der Formel kommt die Meldung „Funktion ist nicht definiert“. Eigentlich kann man da nicht viel falsch machen... -
Hallo Zwurli,
hast letzte Update runtergeladen? Habe jetzt auf Mac überprüft
---
substr(Text, 2, 3)
---
funktioniert ohne Probleme
Grüße
Leo -
Hi Leo,
Ja natürlich funktioniert es, hab es jetzt mal am iPad ausprobiert. Aber warum heißt die Funktion „substr“ und nicht „Teilzeichenkette“, wie in der Beschreibung angegeben? Wo hätte ich das finden können?
Liebe Grüße,
Wolfgang -
Hallo Wolfgang,
das ist das Geniale an Ninox: Du kannst in vielen Sprachen programmieren. Du als Deutsche oder ich als Russe kann eigene Sprache einstellen und während Programmierung auf "visuell" einstellen. Dort gibt es übrigens auch die Funktion "Teilzeichenkette" in jeweils eingestellter Sprache unter "Text/Datum". Wenn jemand schon ein bisschen Erfahrung mit Ninox eingesammelt hat und die erweiterten Funktionen nutzen möchte, greift auf "Text" und schreibt dann die Skripte in Ninox eigen Sprache NX. Diese ähneln gängigen Sprachen wie Java oder Swift , und die Dokumentation is auch in English.
Grüße
Leo -
Verstehe ich das richtig, dass man die englischen Begriffe verwenden muss, wenn man im visuellen Modus programmiert?
-
Du kannst im visuellen Modus gar nicht schreiben, nur die Kästchen mit Kodenamen ins Feld schieben. Und wenn du im Txtmodus bist, dann geht es nur in English bzw. in NX, the Ninox query language.
Grüße
Leo -
Ah, das erklärt einiges. Ich habe im Textmodus den deutschen Begriff eingegeben.
Was ich noch nicht verstanden habe ist, wie man im visuelle Modus Argumente eingibt, also die "2" oder "4" bei folgendem Beispiel:
Teilzeichenkette (MeinFeld,2,4) -
Unter "Rechnen" gibt es in Zahlenfeld "1234". Dieses kannst du in das Argumentfeld ziehen und dann 1234 durch 2 ersetzen.
-
Ich benutze diese Seite:
http://manual.ninoxdb.de/en/function-and-language-reference-2/
und diese
https://ninoxdb.de/en/whatsnew
und diese
http://manual.ninoxdb.de/de/forums/forum/support-de/
Birger - Ninox Support -
Super, jetzt funktioniert alles, danke!
-
Guten Tag,
Wenn ich die Zeit formatiere:
---
format(Uhrzeit, "hh:mm a")
---
erscheint die Zahlenangabe um 1 Stunde nach vorne (statt 10:00 - 11:00).
Das gilt für alle Arten von Format()
grüße
Leo -
Hey Ninox-Team!
Ich habe eine Befehlsschaltfläche "Kommen" angelegt, die das Feld "Start" auf jetzt setzt.Start := now()
Dabei entsteht folgendes Problem: statt 16:00 wird in das Feld 15:00 eingetragen, also eine Stunde zu früh. Wenn ich jedoch direkt im Feld "Start" auf "Jetzt" klicke, trägt es die korrekte Uhrzeit ein.
Ist die Funktion fehlerhaft? Gibt es einen Workaround?
Vielen Dank schonmal!
PS: Super Software! -
Hallo J Schneider,
versuch mal so:
---
Start := time(now())
---
Grüße
Leo -
Perfekt, das funktioniert. Vielen Dank!
Content aside
- vor 6 JahrenZuletzt aktiv
- 254Antworten
- 72855Ansichten