Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Catrex am 09.07.04 - 12:15:12

Titel: Datumsfelder vergleichen ? Machbar ?
Beitrag von: Catrex am 09.07.04 - 12:15:12
Hallo,

ich habe eine kurze Frage. Ich habe eine Maske in der mehrere Datumsfelder sind. Ich möchte mir gerne immer das kleinste Datum in einer Ansicht anzeigen lassen. Ist das machbar. Man könnte doch ein berechnedes Feld nehmen und dann sowas wir @min machen oder so. Aber dazubrauche ich ja Zahlenwerte und kein Datum. Kann ich ein Datum nicht als Integer darstellen lassen ?

Es handelt sich um 10 Datumsfelder die nicht zwangsläufig ausgefüllt sind. Wenn aber welche ausgefült sind soll immer das "neuste" bzw. "jüngste" odr auch "kleinste" im berechnenden Feld stehen !

Vielleicht hat ja einer von euch eine Idee oder so !

mfg

Sebastian ! ! !
Titel: Re:Datumsfelder vergleichen ? Machbar ?
Beitrag von: Driri am 09.07.04 - 12:54:16
Du müßtest dann die Werte der Datumsfelder in einem Listenfeld so umbauen, daß daraus Zahlen werden :

@Integer(YYYYMMDD)

Das ergibt dann aus

09.07.2004 -> 20040709
08.06.2004 -> 20040608

etc.

In ein zusätzliches berechnetes Feld würde ich dann mit @Min(Listenfeld) das Minimum reinpacken, daß kann man dann in der View wieder verwenden, muß man dann halt noch den Integer wieder zu nem Datum umbasteln.
Titel: Re:Datumsfelder vergleichen ? Machbar ?
Beitrag von: Catrex am 09.07.04 - 13:06:14
Mmmh, hört sich logisch an, aber wie bekomme ich die da rein ? Das ist mir noch nicht so klar, und wo gebe ich dann an wie "er" die Daten umzuwandeln hat ?
Titel: Re:Datumsfelder vergleichen ? Machbar ?
Beitrag von: Driri am 09.07.04 - 13:19:54
Für das Listenfeld (berechnet), sollte z.B. folgende Formel funktionieren :

@Integer(@Year(Datum1)&@Month(Datum1)&@Day(Datum1):_
@Integer(@Year(Datum2)&@Month(Datum2)&@Day(Datum2):_
...

Evtl. muß man da noch nen bißchen mehr basteln, ich bin mir z.B. nicht sicher, ob Monat und Datum dann auch immer zweistellig ermittelt werden.
Zusätzlich sollte man noch auf NULL prüfen, bevor man die Werte da zusammenkettet.

Das zweite berechnete Feld für den Minwert könnte dann so aufgebaut sein :

@Min(Listenfeld)
Titel: Re:Datumsfelder vergleichen ? Machbar ?
Beitrag von: koehlerbv am 09.07.04 - 13:23:53
Mit @Min wird das nicht funktionieren, da immer zwei Werte verglichen werden. Sind es Listen, erfolgt ein paarweiser Vergleich.
Notes speichert wie auch andere Programme Datumswerte intern grundsätzlich sowieso schon als Zahl ab, ein Vergleich ist also immer ohne Umwandlung möglich. Ich befürchte nur, dass das nur "zu Fuss" zu erledigen ist:
d1 := @If (@IsTime (Datum1); Datum1; @Date (2499;12;31);
d2 := @If (@IsTime (Datum2) & Datum2 < d1; Datum2; d1);
d3 := @If (@IsTime (Datum3) & Datum3 < d2; Datum3; d2);
und so weiter.
In der letzten Variablen steht dann der kleinste gefundene Wert.

Bernhard
Titel: Re:Datumsfelder vergleichen ? Machbar ?
Beitrag von: Driri am 09.07.04 - 13:30:49
OKay, da war ich wohl zu voreilig, danke Bernhard.  ;)

Andere Alternative, die mir einfällt wäre, den Inhalt des Listenfeldes zu sortieren und dann das erste bzw. letzte (je nach Sortierung) Element der Liste per @Subset zu ermitteln.

Könnte man im Querysave als Script unterbringen, aber vermutlich ist Bernhards Vorschlag dann besser, da man da alles über ein Feld abwickeln kann.
Titel: Re:Datumsfelder vergleichen ? Machbar ?
Beitrag von: Catrex am 09.07.04 - 13:54:08
Ok das klingt noch besser ! Aber wo lasse ich das den berechnen ? Also in einem Feld oder wie ? Das ist mir noch nicht so ganz klar.

Also wo schreibe ich das rein: "d1 := .... bis d10 := ..." ?
Titel: Re:Datumsfelder vergleichen ? Machbar ?
Beitrag von: koehlerbv am 09.07.04 - 14:00:28
Also wo schreibe ich das rein: "d1 := .... bis d10 := ..." ?
In ein zusätzliches berechnetes Feld.

@Driri:
Wie willst Du denn die Liste sortieren ? Vielleicht habe ich jetzt ja ein Brett vor'm Kopp ...

Bernhard
Titel: Re:Datumsfelder vergleichen ? Machbar ?
Beitrag von: Catrex am 09.07.04 - 14:16:39
Wenn ich das so reinschreibe wie du es oben gemacht hast und dann die feldnamen anpasse und das dann noch bis d10 fortführe, dann bekomme ich eine Fehlermeldung: Kein Haupt- oder Auswahlausdruck in Formel:"

Was mache ich dann falsch ?
Titel: Re:Datumsfelder vergleichen ? Machbar ?
Beitrag von: Semeaphoros am 09.07.04 - 14:18:54
Am Schluss schreibst Du noch ein

d10

so, dass das Resultat auch im Feld erscheint
Titel: Re:Datumsfelder vergleichen ? Machbar ?
Beitrag von: Catrex am 09.07.04 - 14:36:06
Ahhhh ! Der Schleier ist gefallen ! Danke, klappt ja super !
Titel: Re:Datumsfelder vergleichen ? Machbar ?
Beitrag von: Driri am 09.07.04 - 14:49:05
@Bernhard :

Wieso ? Wenn ich eine Liste mit Werten habe, kann ich die doch per Script sortieren lassen. Die sortierte Liste schieße ich dann in das Feld und kann dann wieder per @Subset operieren. Oder ich zieh mir direkt den entsprechenden Wert aus der Liste und setze den in ein entsprechendes Feld.
Titel: Re:Datumsfelder vergleichen ? Machbar ?
Beitrag von: koehlerbv am 09.07.04 - 15:03:01
Jo, mit Script ... Aber wozu dann noch ein @Subset mit Formelsprache - dann kann ich das doch gleich simpler halten und das ermittelte Minimum auch noch ins gewünschte Feld werfen.

Ich dachte schon, Du hättest @Sort entdeckt  ;D

Bernhard
Titel: Re:Datumsfelder vergleichen ? Machbar ?
Beitrag von: Semeaphoros am 09.07.04 - 16:07:59
@sort erst ab ND6, dort aber durchaus entdeckbar :)
Damien Katz sei dank
Titel: Re:Datumsfelder vergleichen ? Machbar ?
Beitrag von: koehlerbv am 09.07.04 - 16:15:27
Jo, in R6. Aber da hat sich ja eh' eine Menge gebessert. Aber bis dahin muss man eben für R5-Installationen noch 'drumrum programmieren (was ja auch reizvoll sein kann ;-)
Was auch bei R6 nicht aufhören wird ... Wir hatten es ja gerade heute wieder mit den nach wie vor dringend erwünschten, aber fehlenden Methoden der NotesUIDocument Class.

Bernhard
Titel: Re:Datumsfelder vergleichen ? Machbar ?
Beitrag von: Driri am 12.07.04 - 09:58:22
Jo, mit Script ... Aber wozu dann noch ein @Subset mit Formelsprache - dann kann ich das doch gleich simpler halten und das ermittelte Minimum auch noch ins gewünschte Feld werfen.

Ich dachte schon, Du hättest @Sort entdeckt  ;D

Bernhard

Hast recht, wenn schon Script, dann richig  ;)