0

Ansichten per Datum filtern

Hallo!

Kann man Ansichten auch per spezieller Datumsvorgaben filtern?

- Z.B. eine Ansicht als Liste mit den Einträgen der letzten 2 Wochen oder des aktuellen Monats. Automatisch, ohne dass ich jedes Mal den Filter selbst bei den Werten für "von" - "bis" festlegen muss? Also praktisch "heute - 14", bzw. "Monat = Monat(heute)" oder eine derart gestaltete Filter-Formel.

- Oder eine Liste des aktuellen Monats. Das bräuchte ich konkret für ein bestimmtes Diagramm. Da sollen nur die Einträge des aktuellen Monats ausgewertet werden.

Apropos Diagramme: Auf dem Mac als Diagramme angelegte Ansichten werden mir auf dem iPhone nicht dargestellt. Feature, Bug oder gibt es da einen Trick?

12 Antworten

null
    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Bernhard,

    geh in die Spaltem die immer die Einträge hat (Rechnungsnummer oder so). Dort in der Funktion kannst du schreiben:
    ---

    if month(Datum)=month(today()) then RECHNUNGSNUMMER end

    ---

    So werden nur dort Rechnungsnummern angezeigt wo die Bedingung stimmt (diesen Monat). Wenn du jetzt bei dem Filter noch schreibst :

    ---

    !=null

    ---

    dann hast du einen dynamischen Filter

    Leo

    • Bernhard_Schulze
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Leonid!

    Danke für diese und auch die anderen Antworten. Mit einigem bin ich leider nicht so ganz einverstanden - was die Nutzung vom iPhone und die Darstellungen dort betrifft z.B. ;-) (ist dann wohl mal eine Aufgabe von Ninox, das zu überarbeiten).

    Aber es sind schon einmal gute Tipps zum Nachdenken und Auszuprobieren.

    Was diese Filtergeschichte hier betrifft, wäre eine Formel für die letzten 2 Wochen in etwa dann so zu verstehen, wobei DATUM das Datumsfeld (inkl. Uhrzeit) selbst bezeichnet, auf das sich der Filter beziehen soll:

    today() ≥ DATUM ≥ (today() - 14)

    Bin ich da auf dem richigen Weg? Anzumerken ist, dass es für einen Tag (ohne Uhrzeit) mehrere Einträge gibt.

    Beispiel:

    Das hieße also, dass alle Datensätze von einschließlich heute an rückwirkend bis zum 10.10.2020 aufgelistet werden sollen. Morgen dann eben bis zum 11.10.2020 usw.

    Das mit den Monaten sollte ich verstanden haben, denke ich. Kann ich, denke ich, nachvollziehen. Danke vorerst einmal - weitere Fragen kommen bestimmt noch ;-)

    • mirko3
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hi, Bernhard. Besser Du nimmst: Datum <= today() and Datum >= today()-14 

    Gruß. Mirko

    • Bernhard_Schulze
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo MZ!

    Danke für die Formel. Werde ich probieren.

    • Bernhard_Schulze
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Guten Morgen!

    Also ich bekomme es ums Verrecken nicht gebacken. Ich habe alle möglichen (und vor allem wohl auch unmöglichen) Formelvarianten versucht, es an verschiedenen Feldern probiert - egal was ich mache, das Ergebnis sind dann immer "0" Datensätze.

    Kann es an dem eingesetzten Feld liegen, dass ich kein Ergebnis erhalte?

    Das Ergebnis in der Listenansicht ist das:

    Muss ich das vielleicht erst in etwas anderes umwandeln? Ich habe es mit "day(Datum + Uhrzeit)" versucht, nur mit "Datum" und was mir Ninox noch so alles an Tagesfunktionen bietet. Kommt nichts raus dabei. Im Handbuch ist noch etwas von "Zeitstempel" die Rede, aber das finde ich in Ninox selbst nirgends.

    Ich habe mir den Filter noch einmal genau überlegt: Eigentlich müsste es ja sogar reichen, wenn ich alle Datensätze "größer als heute-14 Tage" suche, da ich ja keine Datensätze in der Zukunft habe. Auch das bringt nichts.

    Das Blöde ist ja, dass ich ausgerechnet so einen Filter nicht bei dem Feld anhängen kann, um das es geht: Nämlich das Datumsfeld. Vielleicht liegt es ja auch daran?

    Ich werde mal sehen, ob es in den Webinar-Datenbanken etwas in der Art gibt. Vielleicht habe ich ja einen Denkfehler in der Formel drin.

    -----

    An Leonid:

    Ist in der Formel "if month(Datum)=month(today()) then RECHNUNGSNUMMER end" nicht eine schließende Klammer zu viel?

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Bernhard, Die Formel für due Spalte "Datum+Uhrzeit" für die letzte 14 Tagesollte so sein :

    ---

    if days(date('Datum + Uhrzeit'), today()) <= 14 and days(date('Datum + Uhrzeit'), today()) >= 0 then
    'Datum + Uhrzeit'
    else
    datetime(0)
    end

    ---

    Beim Filter setzt du beim Feld "Von" ein Datum vom 1971 und eine belibiege Zeit ein

     

    Leo

    • Bernhard_Schulze
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Leo!

    Danke für diesen Ansatz. Nur, wo bringe ich diese Formel unter? Ist das dann ein eigenes, neu anzulegendes Berechnungfeld, das ich in den Filter der Ansicht einfüge? Oder einfach an ein beliebiges Feld des Datensatzes anhänge?

    • Bernhard_Schulze
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Habs! Danke! Die Formel ersetzt in der Ansicht das Eingabefeld "Datum + Uhrzeit". Jetzt muss ich nur noch verstehen, wie das funktioniert ;-)

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    • Bernhard_Schulze
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Vielen Dank für Deine Hilfe!

    "Guru" ist wohl die passende Bezeichnung für Dich ;-)

    Ich verstehe, dass die Darstellung des Feldes so berechnet wird, habe aber noch nicht verstanden, wie das dann als Filter fungiert. Aber das wird wohl auch noch mal passieren.

    Jetzt hängt halt in der Eingabemaske noch dieses Feld herum, das ich noch ausblenden will, aber das werde ich auch noch heraus bekommen.

     

    Jetzt erst mal noch einen schönen Sonntag, der heute ja so richtig golden werden soll.

     

    Mit den besten Grüßen

    Bernhard

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Damit wir über Datumsfelder sprechen können muss Zeitstempel zuerst in ein Datum umgewandelt werden. Dies geschiet mit date('Datum + Uhrzeit'). die Formel schaut ob ein Datum  von dem Zeitstempel mehr 14 Tage in der Vergangenheit liegt. Die Funktion days (date('Datum + Uhrzeit'),today()) berechnet es. 

    Wenn der Zeitstempel älter als 14 Tage ist, wir ein Zeitstempel von 01.01.1970, 01:00 rein gesetzt (das wird mit datetime(0) erreicht)

    so hast du eine Spalte wo alle Einträge alter als 14 Tage einen Zeitstempel von (01.01.1970, 01:00 ) haben. Bei Filter kann man nur einen festen Datum setzen.Wenn ich jetzt bei "von" einen  Zeitstempel von 01.01.1971 10:00 setzt und "bis" leer lasse, werden alle 170-e Datensätze ausgeblendet.

     

    Grüße

    Leo

    • Bernhard_Schulze
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Aha, so ist das.

    Naja, bis ich so weit bin, die Syntax von Ninox so haarklein herunter zu brechen, wird noch etwas Zeit ins Land ziehen ;-)

    Mich hat auch etwas dieser "Zeitstempel"-Begriff irritiert, der als Feld oder Formel nirgends erscheint. Dass damit 'Datum + Uhrzeit' gemeint sein könnte, hatte ich mir zwar gedacht, aber nicht, wie ich das dann in einer Formel verwerten könnte.

     

    Nochmal Danke auch für diese Erklärung.

     

    Mit sonntäglichen Grüßen

    Bernhard

Content aside

  • vor 4 JahrenZuletzt aktiv
  • 12Antworten
  • 1430Ansichten