Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: macom111 am 13.11.05 - 23:49:31

Titel: Datum/Zeit Differenz mit Spaltenformel berechnen
Beitrag von: macom111 am 13.11.05 - 23:49:31
Hallo zusammen,

ich habe 2 Felder vom Typ Datum/Zeit
Date (Beginn)
AbgeschlDatum (Ende)

In einer Ansicht habe ich zur Berechnung der Differenz eine Spalte „Tage“ eingefügt für die es kein
Berechnetes Feld in der Maske gibt.Dies will ich per Spaltenformel berechnen.
Eigentlich kein Problem: (AbgeschlDatum-Date) / 86400.

Jetzt kann es aber sein, daß das Feld „AbgeschlDatum“ noch leer ist. Dann steht dort:
„Fehler: Falscher Datentyp für Operator oder @Funktion“.

Setze ich die Formel @If (AbgeschlDatum = ""; ""; "") ein, wird in der Spalte „Tage“ korrekterweise bei einem leeren Feld „AbgeschlDatum“ nichts eingetragen. Leider bleiben auch alle anderen Dokumente ohne Ergebnis.

Wie kann ich also @If (AbgeschlDatum = ""; ""; "") und (AbgeschlDatum-Date) / 86400 miteinander kombinieren? Habe in der Hilfe und auch hier im Forum nichts gefunden.

Schon mal Danke im voraus für eure Tips.

Gruß Siggi
Titel: Re: Datum/Zeit Differenz mit Spaltenformel berechnen
Beitrag von: koehlerbv am 13.11.05 - 23:57:08
Doch Siggi - Du hättest etwas finden können  :) Aber dann hättest Du ja auch schon die Antwort gewusst (das wäre nämlich die erforderliche @function gewesen).

Also: Du musst die Berechenbarkeit vorher prüfem:

@If (@IsTime (AbgeschlDatum) & @IsTime (Datum); ((AbgeschlDatum - Date) / 86400); "").

@IsTime ist hier also Dein Helferlein.

Good luck.

Bernhard
Titel: Re: Datum/Zeit Differenz mit Spaltenformel berechnen
Beitrag von: macom111 am 14.11.05 - 00:04:41
Ich sag nur eins:  ;D
Vielen Dank und eine gute Nacht!
Titel: Re: Datum/Zeit Differenz mit Spaltenformel berechnen
Beitrag von: koehlerbv am 14.11.05 - 00:09:47
Schön, dass es geklappt hat.

Generell gilt: Bevor man auf Items zurückgreift (egal, ob via @functions, LS, Java, JavaScript, C) muss man einfach den Datentyp prüfen, wenn eine fehlerhafte Itembelegung möglich ist (und das ist sie eigentlich immer).

Für @functions ist noch kritisch: @IsNumber.

Hier die Pendants in LS:
IsDate
IsNumeric

Das könnte man jetzt noch beliebig ausdehnen. Das Fazit sollte aber sein: Glaube nie, das etwas unmöglich ist - überprüfe es vorher.

Bernhard
Titel: Re: Datum/Zeit Differenz mit Spaltenformel berechnen
Beitrag von: flaite am 14.11.05 - 14:37:17
Java
have to nitpick, um ein paar Punkte klarzustellen.

Die Notwendigkeit des Type-Checking ist Notes-spezifisch (und gilt für alle Programmiersprachen, die auf Notes zugreifen). Bei anderen Datenbanktypen gilt das aber nicht so. In Relationalen Datenbanken, weiss ich ganz genau, welcher Typ zurückkommt. Das wird durch das abstrakte Datenbankschema vorgegeben. Z.B. varchar
oder decimal (9,3), Int, etc.

Innerhalb eines Objektmodells ist type-checking auch nur extrem selten notwendig.

Der Punkt, wo Type-Checking notwendig ist, sind die Eingaben des Users. Zur Überprüfung derselben benutzt aber jeder self respecting Java Programmierer eins der Validierungsframeworks (die man aber auch erst verstehen muß, xml-Deskriptoren für schreiben muß, etc.).