Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Schorschi353 am 23.04.08 - 17:03:38

Titel: Anzahl Tage von einem bestimmten Zeitraum bis heute in Ansicht anzeigen
Beitrag von: Schorschi353 am 23.04.08 - 17:03:38
Hey Leutz,

ich möchte in einer Ansicht die Anzahl der Tage anzeigen lassen, die vergangen sind, seid ein Dokument erstellt wurde.
Man soll also sehen, wieviele Tage es her ist, dass das Dokument erstellt wurde.

Ist sowas möglich? Wenn ja wie?  ???

In der Suche hab ich dazu leider nix gefunden..

Danke euch schonmal vielmals!!

Marius
Titel: Re: Anzahl Tage von einem bestimmten Zeitraum bis heute in Ansicht anzeigen
Beitrag von: koehlerbv am 23.04.08 - 17:06:57
Ich bin zwar nicht "Leutz", aber: @Today und @Created sollten in den DesignerHelp studiert werden. Weiters: Ansichten mit Bezug auf das aktuelle Datum können bei entsprechender Dokumentenzahl ein Performacekiller allererster Güte werden!

Bernhard
Titel: Re: Anzahl Tage von einem bestimmten Zeitraum bis heute in Ansicht anzeigen
Beitrag von: Schorschi353 am 24.04.08 - 15:45:33
Danke Bernhard für deine schnelle Antwort!

Ich habs jetzt so gelöst:

@Abs((@Today - @Created) / 86400)

Natürlich ist mir bewusst, dass die Performance leiden kann, wenn die Dokumentenanzahl zunimmt, das muss ich dann einfach im Auge behalten und ggf die Formel in der Ansicht wieder rausnehmen.

Sankedön!  :)

Marius
Titel: Re: Anzahl Tage von einem bestimmten Zeitraum bis heute in Ansicht anzeigen
Beitrag von: koehlerbv am 24.04.08 - 15:51:46
Hallo Marius,

erwartest Du Einträge aus der Zukunft? Steht Euer Domino mit der Enterprise in Verbindung?  ;D Das @Abs macht ja sonst eher weniger Sinn  ;)

Bernhard
Titel: Re: Anzahl Tage von einem bestimmten Zeitraum bis heute in Ansicht anzeigen
Beitrag von: jo@chim am 24.04.08 - 16:08:54
Hallo MariusZ...
... so schnell kannst Du gar nicht schauen, wie Deine Performance im Produktivbetrieb in den Keller gehen wird. Und dann gibts eins aufs Auge (von den Anwendern)  ;)

Um das Problem zu umgehen, habe ich mir einen Agenten gebastelt, der mir jede Nacht in den Spalten- und Selektions-Formeln aller Ansichten die Variable "_varAct" sucht und diese mit dem aktuellen Datumswert belegt (Code siehe unten - Importiere das LS einfach in einen zeitgesteuerten Agenten, Ziel alle Dokumente, den Du täglich ablaufen lassen kannst).

Wenn Du dann in einer Spalte das Alter eines Dokuments in Tagen anzeigen willst, schreibe folgende Spaltenformel:
Code
_varAct:=@ToTime("24.04.2008");
@ToNumber(_varAct-@created)/86400

Hier @Abs zu nehmen ist natürlich @absoluter Unsinn, wie Bernhard schon richtig bemerkt hat  ;D

Die erste Zeile mit der Variable bitte genau so in die Spalten- oder Selektionsformel schreiben!

Hier also der Code für den Agenten:
Code
Option Public
Sub Initialize
	Dim session As New NotesSession
	Dim db As NotesDatabase
	
	'Name der Variablen für den Datumswert in den Views
	varActStr$="_varAct"
	
	datStrStart%=Len(varActStr$)+12
	k=0
	m=0
	
	Set db = session.CurrentDatabase
	views = db.Views
	On Error Resume Next
	Forall v In views		
		Print "Lese " & v.Name & " -  Selection Formula"
		org_formula$=v.SelectionFormula
		If Left(org_formula$, Len(varActStr$)) = varActStr$ Then
			k=k+1
			Print "Aktualisiere " & v.Name & " -  Selection Formula"			
			org_formula$=v.SelectionFormula
			org_dat$= Mid(org_formula$,datStrStart%,10)
			new_dat$=Format(Now(),"dd.mm.yyyy")
			new_formula$=Replace(org_formula$,org_dat$,new_dat$)
			v.SelectionFormula=new_formula$			
		End If
		
		i=0
		Forall vc In v.Columns
			i=i+1
			
			Print "Lese " & v.Name & " -  Spalte Nr. " & Cstr(i) 
			org_formula$=vc.Formula
			
			If Left(org_formula$, Len(varActStr$)) = varActStr$ Then
				m=m+1
				Print "Aktualisiere " & v.Name & " -  Spalte Nr. " & Cstr(i) 
				org_formula$=vc.Formula
				org_dat$= Mid(org_formula$,datStrStart%,10)
				new_dat$=Format(Now(),"dd.mm.yyyy")
				new_formula$=Replace(org_formula$,org_dat$,new_dat$)
				vc.Formula=new_formula$				
			End If
			
		End Forall
	End Forall
	
	Print Cstr(k) & " Selection Formulas, " & Cstr(m) & " Column Formulas aktualisiert"
End Sub

Viel Glück  :D
Titel: Re: Anzahl Tage von einem bestimmten Zeitraum bis heute in Ansicht anzeigen
Beitrag von: koehlerbv am 24.04.08 - 16:22:26
Joachim,

Deine Lösung kann aber auch tierisch nach hinten losgehen: Wenn Replizierkonflikte nicht gemischt werden (und 7.0.3 hat da doch ein tierisches Problem, IIRC) oder Leute in Takatukaland sitzen und diese Datenbank replizieren müssen und ...

Wenn Du eine DB hast, in der 5000 Dokumente in 5 Jahren noch nicht erreicht sind, bekommst Du hingegen auch keine Performanceprobleme, die irgendwen aufregen würden.

Man muss also die Vorgehensweisen sorgfältig abwägen ...

Bernhard
Titel: Re: Anzahl Tage von einem bestimmten Zeitraum bis heute in Ansicht anzeigen
Beitrag von: Schorschi353 am 25.04.08 - 08:35:44
Hey Bernhard, Hey Joachim,

danke zunächst für eure schnellen Antworten!

Aber so unsinnig ist das @Abs nicht, guckst du beide hier:

                                http://atnotes.de/index.php?topic=10466.0 (http://atnotes.de/index.php?topic=10466.0)

Also momentan wird die DB nur hier am Standort genutzt, Timbuktuianer sind also erstmal ausgeschlossen.  ;)

Wir haben Version 7.0.2 und die Dokumentenanzahl wird 5.000 Stück wohl nicht erreichen..
Ich werde den Agent gleich mal testen..

Marius
Titel: Re: Anzahl Tage von einem bestimmten Zeitraum bis heute in Ansicht anzeigen
Beitrag von: jo@chim am 25.04.08 - 09:11:37
Wenn Replizierkonflikte nicht gemischt werden (und 7.0.3 hat da doch ein tierisches Problem, IIRC)
Sprich! Wo können bei der Replikation der Gestaltungselemente Probleme auftreten?

btw: 5.000 Dokumente scheint mir etwas euphemistisch... durch die ständigen Aktualisierungen bei @today-Spaltenformeln, die die Arbeit im kompletten Client alle paar Minuten für ein oder zwei Sekunden blockieren, kannste den Anwendern das Leben auch bei kleineren DB's ganz schön zur Hölle machen  (1.000 Doks haben hier vollkommen ausgereicht) >:D
Titel: Re: Anzahl Tage von einem bestimmten Zeitraum bis heute in Ansicht anzeigen
Beitrag von: m3 am 25.04.08 - 09:19:39
Wenn Replizierkonflikte nicht gemischt werden (und 7.0.3 hat da doch ein tierisches Problem, IIRC)
Sprich! Wo können bei der Replikation der Gestaltungselemente Probleme auftreten?
Replikation der Daten, nicht des Designs. Ein kleiner aber feiner Unterschied.

Jedes mal, wenn zwei Personen einen Datensatz gleichzeitig bearbeiten.
Titel: Re: Anzahl Tage von einem bestimmten Zeitraum bis heute in Ansicht anzeigen
Beitrag von: botschi am 25.04.08 - 09:37:21
Das hab ich jetzt aber auch nicht geschnallt  ???

Wenn zwei Personen zeitgleich Daten ändern und die Konflikte nicht gemischt werden, gibt es doch immer "Probleme".
Was hat das denn jetzt mit Achims Agenten zu tun? Denn müsste ja schon ein Entwickler zeitgleich mit dem Agenten die Ansicht ändern?
Davon mal abgesehen, dass ich das auch nicht so machen würde... Ich lasse ungerne jede Nacht Agenten laufen die Doks (in diesem Fall die Ansichten) bearbeiten, nur damit eine View stimmt.

Matthias
Titel: Re: Anzahl Tage von einem bestimmten Zeitraum bis heute in Ansicht anzeigen
Beitrag von: koehlerbv am 25.04.08 - 11:21:02
Ich habe schlicht übersehen, dass Joachim die Ansichten selbst ändert - mea culpa. Das hat mit möglichen Replizierkonflikten natürlich nichts mehr zu tun.

Bernhard
Titel: Re: Anzahl Tage von einem bestimmten Zeitraum bis heute in Ansicht anzeigen
Beitrag von: jo@chim am 25.04.08 - 16:26:56
Ich habe schlicht übersehen
Uffffff... *tiefausatmen*... ich hatte jetzt tatsächlich die Befürchtung, dass es, wenn die Agents auf ihren jeweiligen Servern die Spalten-/Selektions-Formeln ändern, irgendwelche schrägen(Replikations-) Effekte gibt...
 ::)

Aber @botschi:
Davon mal abgesehen, dass ich das auch nicht so machen würde... Ich lasse ungerne jede Nacht Agenten laufen die Doks (in diesem Fall die Ansichten) bearbeiten, nur damit eine View stimmt.

Wie würdest Du es denn machen? Die einzige Alternative zur @today-Misere, die mir einfällt, wäre statt der Views die Docs anzufassen und jede Nacht eine entsprechende Markierung reinzuschreiben, die Vergleiche zum aktuellen Datum ermöglicht... aber besser 10 Ansichten als 10.000 Dokumente. Odddrrr?!   ;)
Titel: Re: Anzahl Tage von einem bestimmten Zeitraum bis heute in Ansicht anzeigen
Beitrag von: m3 am 25.04.08 - 16:38:41
Ich habe schlicht übersehen
Uffffff... *tiefausatmen*... ich hatte jetzt tatsächlich die Befürchtung, dass es, wenn die Agents auf ihren jeweiligen Servern die Spalten-/Selektions-Formeln ändern, irgendwelche schrägen(Replikations-) Effekte gibt...
 ::)
Ok, das hab ich auch übersehen.
ABär: Wenn die Datenbanken replizieren und der Agent auf jedem Server läuft, hat man erst recht wieder einen Palawatsch beinander - und sogar noch schlimmer, weil nicht die Dokumente, sondern die View-Nodes Konflikte werfern. Brrrrr, das will ich mir gar nicht vorstellen, Replizierkonflikte bei Design-Elementen.

Oder lieg ich da falsch liebe Gurus?
Titel: Re: Anzahl Tage von einem bestimmten Zeitraum bis heute in Ansicht anzeigen
Beitrag von: koehlerbv am 25.04.08 - 16:45:16
Nun, wer würde solch einen Agenten auf allen Servern laufen lassen? Und: Designelemente können in der Regel keine Replizierkonflikte bilden - da ist der Repliziermechanismus davor.

Bernhard
Titel: Re: Anzahl Tage von einem bestimmten Zeitraum bis heute in Ansicht anzeigen
Beitrag von: m3 am 25.04.08 - 16:50:28
Was passiert dann aber, wenn so ein Agent auf allen Server laufen würde? Ich denke schon, dass es Probleme geben würde. Aber welche?
Titel: Re: Anzahl Tage von einem bestimmten Zeitraum bis heute in Ansicht anzeigen
Beitrag von: koehlerbv am 25.04.08 - 16:53:10
Naja, nachdem der Agent überall gelaufen ist und wieder alle Server miteinander repliziert haben, wirst Dui feststellen können, wann der Agent zuletzt gelaufen ist und auf welchem Server. Dann weisst Du, welcher Server am ausgelastetsten ist (oder wessen Uhr nachgeht).  ;D

Bernhard
Titel: Re: Anzahl Tage von einem bestimmten Zeitraum bis heute in Ansicht anzeigen
Beitrag von: m3 am 25.04.08 - 17:19:23
*gggg*
Das ist ja fast langweilig.  ;D
Titel: Re: Anzahl Tage von einem bestimmten Zeitraum bis heute in Ansicht anzeigen
Beitrag von: jo@chim am 25.04.08 - 17:32:13
(oder wessen Uhr nachgeht).  ;D
Oder vorgeht? In Amiland zum Speispiel?  :o

Konnte ich aber bisher nicht verifizieren. Vielleicht weil der Agent auf der Replik dort nicht läuft, oder warum?

Diese Dimension des Problems hatte ich bisher überhaupt nicht beachtet... heidernei! Na, das wird ja ein spannender Montag...
Titel: Re: Anzahl Tage von einem bestimmten Zeitraum bis heute in Ansicht anzeigen
Beitrag von: koehlerbv am 25.04.08 - 18:45:46
Also im Amiland geht die Uhr "nach", nicht vor. Ausserdem ist's eh wurscht, da der Agent sicherlich mit mitteleuropäischer Zeitzone eingestellt wurde. Und dann startet der Agent im Amiland "gleichzeitig" mit dem in Europa.

Bernhard
Titel: Re: Anzahl Tage von einem bestimmten Zeitraum bis heute in Ansicht anzeigen
Beitrag von: LN4ever am 25.04.08 - 22:56:06
Das Problem mit Zeitvergleichsansichten kann man entschärfen, indem man in den Ansichtseigenschaften einstellt, daß der Server diese Ansicht max. alle x Stunden aktualisiert. Das hat den Preis, daß das Öffnen dieser Ansicht durch einen User langsam ist, manchmal sehr langsam.

Aber wenn die Tagesdifferenz von entscheidender und geschäftskritischer Bedeutung ist, dann werden die Benutzer damit einverstanden sein oder sich daran gewöhnen oder die Datenbank meiden oder den Programmierer erschlagen.

Von Lösungen wie der vorgeschlagenen, täglich die Selektionsformel zu ändern, halte ich gar nichts. Nicht wegen der Zeitzonen, sondern, weil die Ansicht in einer über einen gewissen Zeitraum nicht replizierten lokalen Replik damit falsche Angaben liefert.

Und wenn man das dann vermeiden will, dann muß man den Anwendern Entwicklerrecht geben und diesen Agenten lokal periodisch im Hintergrund laufen lassen - und da sind wir bei der Einstellung, daß der Agent auf jedem Server ausgeführt wird. Das ist von der Theorie her nicht gar zu schlimm, weil Designelemenrte keine Replikationskonflikte erzeugen, aber es wird schlimm, wenn nacheinander der Japaner, der Amerikaner und der Europäer mit jeweils frisch modifizierter Ansicht replizieren, weil bei jedem die Zeitdifferenz in seiner jeweils verwendeten Zeitzone errechnet wird, und damit die in der Ansicht ausgewiesenen Tagesdifferenzen mehrfach am Tag hin- und herspringen können und insofern auch nicht stimmen können.

Man kann mit einem periodischen Agenten schwellwertüberschreitenden Dokumenten ein ansichtsauswertbares Flag mitgeben. Damit erhöht man allerdings das Repliziervolumen oft erheblich und läuft Gefahr, ziemlich unnötige Replizierkonflikte zu erzeugen.

Resumée: wenn es nicht wirklich sein muß, dann laß es sein.

Gruß

Norbert
Titel: Re: Anzahl Tage von einem bestimmten Zeitraum bis heute in Ansicht anzeigen
Beitrag von: LN4ever am 25.04.08 - 23:17:07
Und als Basislektüre mit Lösung immer wieder zu empfehlen:

http://madicon.de/tippstricks/index_files/000089.php

Gruß

Norbert
Titel: Re: Anzahl Tage von einem bestimmten Zeitraum bis heute in Ansicht anzeigen
Beitrag von: koehlerbv am 26.04.08 - 00:44:55
Resumée: wenn es nicht wirklich sein muß, dann laß es sein.

Ich halte das für das perfekte Resümee. In den meisten Fällen reicht eine nach Datum kategorisierte Ansicht, um die "ollen Kamellen" zu identifizieren (meist ist es doch so, dass es "olle Kamellen" in diesem Status ("unbearbeitet" or what ever) gar nicht geben darf und der Idealfall wäre: Ansicht ist leer.

Die Änderung der Selektionsformel ist tatsächlich eigentlich nur innerhalb einer Zeitzone oder sehr naheliegender statthaft. Und natürlich immer problematisch: Man muss ja danach auch immer den Index neu aufbauen lassen, da man ja "am System vorbei" programmiert hat und sonst seltsame Effekte erleben kann. Diese passieren natürlich immer genau dann, wenn man denkt, das läuft auch so ...

Was den verlinkten "Trick" von Manfred angeht: Er hat (wie immer absolut um Perfektion bemüht!) vor allem auf die Risiken und Nebenwirkungen hingewiesen. Diese sollte man vorrangig beachten. Was heisst "Today" nochmal auf dänisch? I Day? Im gewissen Kontext ja, aber sicher bin ich mir nicht, was Notes angeht. Eventuell kann ich es übernächste Woche beim Kunden in Karup überprüfen ... Und was ist mit spanisch, portugiesisch, finnisch? Von den asiatischen Sprachen mal ganz abgesehen. Und wer weiss schon, mit welchem Server sein Domino übermorgen replizieren soll?

Norbert hat mit den lokalen Repliken und der anderen Besonderheit zeitzonenfremder Dominos weitere ganz wichtige No-Nos genannt.

Fazit: Alle bisher genannten Varianten enthalten - teilweise massive - Fallstricke. Es gab auch genügend Hinweise, wie man es auch anders machen kann:
- Wenige Dokumente: Keine Angst vor Selektionsformeln, die auf der Systemzeit des Dominos beruhen. Wehe aber, wenn es "unerwartet" doch mehr Dokumente werden ...
- Kategorisierte Ansichten nach dem interessierenden Datum. Der geneigte User wird ja wohl noch in der Lage sein zu erkennen, wie alt das Dokument dann ist ...
- Notfalls (wenn gegenüber den Usern gar nichts anderes hilft und man auch nicht kündigen will): Agent und persönliche Ordner (setzt aber voraus, dass man weiss, wie man bei erforderlichen Designänderungen persönlcihe Ordner aus einer DB auch wieder los wird).

Bernhard
Titel: Re: Anzahl Tage von einem bestimmten Zeitraum bis heute in Ansicht anzeigen
Beitrag von: ata am 26.04.08 - 10:05:06
Zitat
Resumée: wenn es nicht wirklich sein muß, dann laß es sein.

... dem würde ich mich anschliesen - ansonsten kannst du immer noch eine aktuelle Auswertung fahren und dir das dann in Excel anschauen...

Toni
Titel: Re: Anzahl Tage von einem bestimmten Zeitraum bis heute in Ansicht anzeigen
Beitrag von: Schorschi353 am 28.04.08 - 16:52:22
Danke euch allen für die vielen Antworten!

Am besten wird wohl wirklich eine Ansicht sein, die nach Datum kategorisiert ist, wie Bernhard geschrieben hat.

Die Sache ist zu heikel, um irgendwelche kaputten Ansichten zu riskieren und es sollte reichen, z.B. das Erstelldatum eines Dokumentes zu sehen, im Zweifelsfall kann man sich die Tage dann noch selbst ausrechnen oder wie Toni bereits sagte in Excel auswerten!

Danke euch!!

Grüße,
Marius
Titel: Re: Anzahl Tage von einem bestimmten Zeitraum bis heute in Ansicht anzeigen
Beitrag von: WT-Herb am 28.04.08 - 22:26:52
Hallo miteinander,

das ist zwar etwas "holprig gebastelt", aber vielleicht kann ja doch jemand etwas damit angangen.

...wieder weg...
(Hier stand ein Link zu einer Datenbank)

Gruß, WH
Titel: Re: Anzahl Tage von einem bestimmten Zeitraum bis heute in Ansicht anzeigen
Beitrag von: koehlerbv am 29.04.08 - 00:04:07
Die von Dir gepostete DB hat mit diesem Problem überhaupt nichts zu tun. Ausserdem wäre es hilfreich gewesen, wenn Du die zwei Formeln zur Datumsberechnung einfach hier angegeben hättest, anstatt auf den Download einer Datenbank zur verweisen, die zudem noch auf einer Seite liegt, die erstmal die JVM benötigt.

Bernhard
Titel: Re: Anzahl Tage von einem bestimmten Zeitraum bis heute in Ansicht anzeigen
Beitrag von: WT-Herb am 24.06.08 - 00:36:14
Ja sorry, war ne blöde Idee. Ich entferne das dann mal wieder.

Gruß