Domino 9 und frühere Versionen > ND8: Entwicklung
Zeitberechnung mit Feldern
Akunin:
jo, genau so hab ich mir das vorgestellt :)
danke dir für den Tip !
aber kleine Frage hab ich noch, ich habe eben mal probiert das nach zumachen, also ich hab ähnlich wie du 2 Datums-Felder mit Mehrfachwerten erstellt, wenn ich nun über die Zeit ermitteln funktion geh, berechnet er bei mir nur oberen beiden Werte, in den Feldern, miteinander, kannst du mir sagen warum ?
Thomas Schulte:
Ohne deinen Code und die Felder die du da eingebaut hast zu sehen? Nein ich kann dir nicht sagen warum das bei dir nicht klappt.
Grundsätzlich hat die Formelsprache eine angenehme Eigenschaft, von der man aber wissen muss. Sie führt jede Operation auf alle Elemente von Multivalue Feldern aus. Das kann man wunderbar benutzen um zum Beispiel mit
FIELD Ergebnis := (@sum(Pausenendezeiten - Pausenanfangzeiten)/3600)
folgendes zu erreichen, wenn in jedem Feld drei Elemente vorhanden sind:
Ergebnis = ( (Pausenendezeiten[1] - Pausenanfangszeiten[1]) +
(Pausenendezeiten[2] - Pausenanfangszeiten[2]) +
(Pausenendezeiten[3] - Pausenanfangszeiten[3]) ) / 3600
Alles in der Formelsprache. Wenn man das produktiv nutzen will muss man noch einiges im Umfeld aufbauen. So muss zum Beispiel für jedes Anfangselement auch ein Endelement vorhanden sein. Außerdem darf die Berechnung nicht erfolgen wenn kein Element vorhanden ist.
Das hier wäre zum Beispiel eine Möglichkeit den Anforderungen gerecht zu werden:
--- Code: ---FIELD fldGesamtzeit := (fldDatEndzeit - fldDatStartzeit)/(3600);
FIELD fldPausenzeit := @If((fldDatPauseStartzeit != "" & fldDatPauseEndzeit != "") & (@Elements(fldDatPauseStartzeit) = @Elements(fldDatPauseEndzeitzeit)) ;@Sum(fldDatPauseEndzeit - fldDatPauseStartzeit)/(3600);0);
FIELD fldZeitdifferenz := @If((fldDatPauseStartzeit != "" & fldDatPauseEndzeit != "") & (@Elements(fldDatPauseStartzeit) = @Elements(fldDatPauseEndzeitzeit)) ;
((fldDatEndzeit - fldDatStartzeit) - @Sum(fldDatPauseEndzeit - fldDatPauseStartzeit))/(3600);
(fldDatEndzeit - fldDatStartzeit)/(3600));
@True
--- Ende Code ---
Bezogen auf das letzte Beispiel wäre das die Formel die hinter der Aktion Zeit ermitteln stehen müsste.
Akunin:
alles klar, danke dir vielmals,
aber ich hab da mal noch ne andere Frage,
und zwar lese ich die Zeiten über einen Agent welche in LS geschrieben ist aus, aber gibt es einen Befehl um Datumswerte in ein
Multivalue Datum/Zeit Feld zuschreiben, ich hab mir zwar die ganzen Append Befehle in der Hilfe angeschaut aber keinen für Date Values gefunden.
Gibs dafür überhaupt nenn Befehl?
Thomas Schulte:
dim Datearray() as Notesdatetime
Redim Preserve Datearray(Counter) as Notesdatetime
Akunin:
doch noch nenn kleines Problem, ich habe mal die von dir gepostet Formel ausprobiert
FIELD Ergebnis := (@sum(Pausenendezeiten - Pausenanfangzeiten)/3600)
aber selbst bei der berechnet er bei mir nur die ersten Werte der beiden Felder mit einander :(
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln