Monatsdifferenz

  • Hallo liebes Forum,


    ihr habt mir gestern bei meinem Problem so wunderbar geholfen, und hoffe ihr wißt auch dabei Rat:
    Ich habe ein berechnetes Feld, in dem die Differen der Monate zwischen Anschaffungsdatum (Numerisches Feld) und heute. Also das Alter in Monaten.


    Wer weiß da etwas? Habe schon mit der Formelsprache probiert, aber bekomme das nicht hin...
    @Month(@today - AnschDat)
    Dabei meckert er an, daß das Ausgabefeld ein Datumsfeld sein soll. habe ich dann auch so eingestellt, meckert aber immer noch.


    lg, woki

    • Offizieller Beitrag

    "@Today - AnschDat" gibt Dir eine Zahl zurück. @Month erwartet aber einen Datumswert.


    Berechnen kannst Du es wie folgt:
    MonatDif := (@Year(@Today) * 12 + @Month(@Today)) - (@Year(AnschDat) * 12 + @Month(AnschDat))


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

    • Offizieller Beitrag

    in dem berechnete Feld muss bei der Berechnungsformel folgendes stehen.


    (@Year(@Today) * 12 + @Month(@Today)) - (@Year(AnschDat) * 12 + @Month(AnschDat))


    Es wird eine Zahl zurückgegeben.


    Gruß
    Dirk

  • ahhhh.... ich werde hier noch verrückt!


    Ich habe das Ausgabefeld als Zahl deklariert,
    das Anschaffungsdatumfeld als Datum/Zeit,
    diese Folrmel beim Ausgabefeld eingefügt: (@Year(@Today) * 12 + @Month(@Today)) - (@Year(AnschDat) * 12 + @Month(AnschDat))
    es auf berechnet gesetzt,


    und trotzdem kommt diese Fehlermelgung:
    Feld: 'BetrMon': Falscher Datentyp für Operator oder @Funktion: Zeit/Datum erwartet

    • Offizieller Beitrag

    meine Vermutung geht in die Richtung, dass das Feld "AnschDat" kein DatumsFeld ist.


    überprüfen kannst Du es, indem Du als Formel @Month(AnschDat) einträgst. Ist der Fehler noch da, dann ist AnschDat kein Datum und Du könntest die Formel wie folgt anpassen:
    (@Year(@Today) * 12 + @Month(@Today)) - (@Year(@TextToTime(@Text(AnschDat))) * 12 + @Month(@TextToTime(@Text(AnschDat))))


    Gruß
    Dirk

  • So, noch ein Problem:


    ich wollte jetzt die Seitenanzahl pro Monát berechnen mit dieser Formel:
    @TextToNumber(@TextToNumber(Seiten) / @TextToNumber(BetrMon))
    und wieder der selbe Fehler, daß eine Zahl erwartet wird, dabei sind der Divisor, Devident und das Ergebnis als Zahl definiert und ich habe zusätzlich noch die @TextToNumber-Formel geniommen!


    woki

  • Kontrollier doch vorher mal ob die zahlen auch inhalt haben.
    @If(@isnumber(dein feld);deine formel; "" )
    Dieses kannst du beliebig verschachteln.


    Übrigens.. den dran das 31.8.04 - 1.08.04 kein einzelne monat ergibt, und das 1.09.04 - 30.7.04 2 monate ergibt, während es eigentlich nur einer ist.

    • Offizieller Beitrag

    probiers mal damit.

    Code
    @TextToNumber(@Text(Seiten)) / @TextToNumber(@Text(BetrMon))


    Mit "@Text(Seiten)" stelle ich sicher, dass Seiten ein String ist und mit @TextTuNumber wird es in eine Zahl zurückverwandelt. Damit funktionieren dann sowohl Zahlen als auch String im Feld Seiten.
    Die äußere @TextToNumber musst Du weglassen, weil die mathematische Funktionen +, -, / und * schon eine Zahl zurückgeben und @TextToNumber erwartet einen String.


    Natürlich solltest Du noch Fehler abfangen, wie z.B.:
    - Seiten darf nicht leer sein
    - BetrMon darf nicht leer und nicht 0 sein


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Zitat

    Übrigens.. den dran das 31.8.04 - 1.08.04 kein einzelne monat ergibt, und das 1.09.04 - 30.7.04 2 monate ergibt, während es eigentlich nur einer ist.


    Das habe ich jetzt so abgefangen: