0

Datum eines Formelfelds auslesen + count()

Hi zusammen, 

ich habe gerade einen absoluten Hänger, vielleicht ist es auch schon zu spät. Auf dem Dashboard soll das folgende Formelfeld überfällige Rechnungen zählen: 

count(select Rechnungen where days('Fällig bis', today()) > 0 and Status != 1 and Status != 3)

Nehmen wir an, 'Fällig bis' sei ein Datumsfeld, dann funktioniert es wunderbar, nur wie müsste der Code lauten, wenn 'Fällig bis' ein Formelfeld ist? (Status 1 = Gezahlt, Status 3 = Storniert, Status 2 = Nicht gezahlt)

Unter anderem habe ich es wie folgt versucht, ohne Erfolg:

count(select Rechnungen where days(date('erwarteter Zahlungseingang'), today()) > 0 and Status != 1 and Status != 3)

5 Antworten

null
    • Ninox-Professional
    • planoxpro
    • vor 2 Monaten
    • Gemeldet - anzeigen

    Hi Felix, mein erster, spontaner Gedanke war: „Ach, da hat wieder einer den Ergebnis-Wert mit styled() oder format() aufbereitet und wundert sich nun, dass die Abfrage nicht mehr funktioniert ...“ (Weil durch die Formatierung aus dem Datum ein String wird.) 😉

    Trifft das vielleicht zu?

      • Felix.5
      • vor 2 Monaten
      • Gemeldet - anzeigen

       Guten Morgen, das trifft mit großer Wahrscheinlichkeit wirklich zu, guter Hinweis! Ich dachte, mit date() kann ich die Datum-Eigenschaft sozusagen zurückholen. 

       "Status" ist ein Auswahlfeld und soll in der Formel lediglich verhindern, dass überfällige Rechnungen, die bereits gezahlt wurden, ebenfalls mitgezählt wurden. Rund um den Status funktionierte eigentlich alles, es lag eher an dem 'Fällig bis' bzw. 'Erwarteter Zahlungseingang' 

      Ich habe Euch die kleine Test-DB mal mit angehängt. :)

      • Ninox-Professional
      • planoxpro
      • vor 2 Monaten
      • Gemeldet - anzeigen

       

      Hallo Felix, was heißt „mit großer Wahrscheinlichkeit“? Nutzt du in dem Funktionsfeld styled() oder nicht?

      Ach, ich soll selber nachschauen? Na gut ... 😉

      Also, ich sehe da insgesamt fünf Felder zur Berechnung des Zahlungsziel-Datums, die tlw. aufeinander Bezug nehmen. Mir fehlt der Kontext, aber es erscheint mir unnötig kompliziert. (Nebenbei: Ist ein Zahlungsziel von 1 Jahr tatsächlich relevant?)

      Grundsätzlich: Wenn auf ein berechnetes und mit styled() optisch aufbereitetes (und damit zu einem String konvertiertes) Datum Bezug genommen werden soll, dann gibt es folgende Möglichkeiten:

      • Die styled()- oder format()-Funktion entfernen.
      • Den String zerlegen und wieder zu einem Datumswert machen.
      • Die Formel zur Berechnung des Datums auch im Abfrage-Script noch mal ausführen.
      • Auf ein anderes Feld vom Typ Datum Bezug nehmen.

      In der angehängten DB habe ich letzteres gemacht und das styled()-Feld lediglich zur Anzeige genutzt. Nur so als Vorschlag.

       

      PS: Ich würde ein Datenfeld nie einfach nur ‚Nr‘ nennen, da diese Bezeichnung eigentlich der intern vergebenen Datensatznummer vorbehalten ist. Es funktioniert zwar, kann aber zu Problemen führen (und zu Verwirrung beim Lesen von Scripts).

      • Felix.5
      • vor 2 Monaten
      • Gemeldet - anzeigen

       Hallo Axel, vielen Dank für die Hinweise rund um ein styled() Funktionsfeld + die allgemeinen Tipps. Das "Nr" habe ich nur auf die Schnelle erstellt, aber Du hast natürlich recht, sollte man in der Praxis nicht machen.

      Zukünftig würde ich es vermutlich auch komplett anders und nachhaltiger aufbauen, Deine Zahlungsziel-Tabelle war z.B. ein super Ansatz. In diesem Fall ging es lediglich um eine alte Baustelle, bei der keine größere Änderung gewünscht ist. Ich tendiere Richtung Hilfsfeld (Datum), dann kann der Rest unberührt bleiben, vielen lieben Dank nochmal. :) 

    • UweG
    • vor 2 Monaten
    • Gemeldet - anzeigen

    Mal mit number(status) probiert wenn im Formelfeld Zahlen angezeigt werden?
    Ansonsten text(status) = "Nicht gezahlt"
    Ich weiss ja nicht was 'Status' für ein Feldtyp ist. Hier bietet sich immer wieder die Funktion debugValueInfo() an, (debugValueInfo(Formelfeld)) um zu vermeiden, dass man Äpfel mit Birnen vergleicht.
    Und wenn Status nur 3 Auswahlmöglichkeiten hat, warum nicht nur in der Bedingung number(Status)=2?

Content aside

  • Status Answered
  • vor 2 MonatenZuletzt aktiv
  • 5Antworten
  • 42Ansichten
  • 3 Folge bereits