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

254 Antworten

null
    • sabineniederhofer
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Danke!
    • sabineniederhofer
    • vor 6 Jahren
    • Gemeldet - anzeigen
    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!
    • Mirko.1
    • vor 6 Jahren
    • Gemeldet - anzeigen
    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
    • Birger_H
    • vor 6 Jahren
    • Gemeldet - anzeigen
    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
    • Birger_H
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hier ein kleines Template entsprechend den Anforderungen:


    Birger - Ninox Support
    • sabineniederhofer
    • vor 6 Jahren
    • Gemeldet - anzeigen
    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
    • Birger_H
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Versuchen Sie folgendes:
    –––
    let myT := today();
    date(year(myT), ceil((month(myT) + 1) / 3) * 3, 1)
    –––


    Birger - Ninox Support
    • Mirko.1
    • vor 6 Jahren
    • Gemeldet - anzeigen
    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
    • Birger_H
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Schicken Sie mir die PC-Version doch einmal zu (support@ninoxdb.de). Wo wollen Sie die Formel hinterlegen?

    Birger - Ninox Support
    • JackPearse
    • vor 6 Jahren
    • Gemeldet - anzeigen
    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
    • JackPearse
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Die Kommentarfunktion schneidet offensichtlich spitze Klammern aus.
    Ich wollte geschrieben haben:

    "Wir haben jeweils zwei Felder:

    (Strasse)(Hausnummer)
    (PLZ)(Stadt)"
    • wolfgangdaeger
    • vor 6 Jahren
    • Gemeldet - anzeigen
    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...
    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo Zwurli,
    hast letzte Update runtergeladen? Habe jetzt auf Mac überprüft
    ---
    substr(Text, 2, 3)
    ---

    funktioniert ohne Probleme

    Grüße
    Leo
    • wolfgangdaeger
    • vor 6 Jahren
    • Gemeldet - anzeigen
    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
    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen
    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
    • wolfgangdaeger
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Verstehe ich das richtig, dass man die englischen Begriffe verwenden muss, wenn man im visuellen Modus programmiert?
    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen
    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
    • wolfgangdaeger
    • vor 6 Jahren
    • Gemeldet - anzeigen
    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)
    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Unter "Rechnen" gibt es in Zahlenfeld "1234". Dieses kannst du in das Argumentfeld ziehen und dann 1234 durch 2 ersetzen.
    • Birger_H
    • vor 6 Jahren
    • Gemeldet - anzeigen
    • wolfgangdaeger
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Super, jetzt funktioniert alles, danke!
    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen
    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
    • J_Schneider
    • vor 6 Jahren
    • Gemeldet - anzeigen
    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!
    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo J Schneider,
    versuch mal so:
    ---
    Start := time(now())
    ---

    Grüße
    Leo
    • J_Schneider
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Perfekt, das funktioniert. Vielen Dank!

Content aside

  • vor 6 JahrenZuletzt aktiv
  • 254Antworten
  • 72855Ansichten