Domino 9 und frühere Versionen > ND8: Entwicklung
Formel in Ansichtsspalte bringt kein Ergebnis
(1/1)
smokyly:
Guten Tag,
ich habe in der names eine Ansicht erstellt, die in der ersten Spalte die Person ausgibt und in der zweiten soll die letzte Version con ClntBld dargestellt werden.
Ansichtsauswahl:
--- Zitat ---SELECT Type = "Person"
--- Ende Zitat ---
Person:
--- Zitat ---@Trim(@Subset(LastName;1))+@If(Firstname !="";" , "+@Trim(@Subset(FirstName;1));"")+@If(MiddleInitial !="";" "+@Trim(@Subset(MiddleInitial;1));"")
--- Ende Zitat ---
Version:
--- Zitat ---t_elements:=@Elements(ClntDate);
@If(
t_elements=0;t_count:=0;
(@For(i:=1;t_elements;i:=1+1;
@If(i=1;t_date:=@Subset(ClntDate;i) & t_count:=1;
@If(@Subset(ClntDate;i)>t_date;t_date:=@Subset(ClntDate;i) & t_count:=i;
"")
)
)
)
);
@If(t_count=0;"";@Subset(ClntBld;t_count))
--- Ende Zitat ---
Wenn ich die Ansicht aktualisieren will, läuft sich der Client tot.
Was mache ich falsch? Dass es bestimmt auch einfacher geht ist nicht mein Problem, sondern warum da kein Ergebnis kommt (in dem Sinne, dass Ansicht aktualisieren nicht zum Ende kommt).
Gruß
Mitch:
Heyho,
abgesehen davon, dass ich @For in Ansichtsspalte bedenklich finde (Performance) und mir auch gar nicht genau angeguckt habe, was du da eigentlich genau mit erreichen willst, denke ich dass der Fehler in der Schleife liegt, da keine Abbruchbedingung vorliegt:
--- Code: ---@For(i:=1;t_elements;i:=1+1;
--- Ende Code ---
Wenn t_elements jetzt größer 0 ist, läuft das einfach immer weiter und weiter.
Nimm doch lieber:
--- Code: ---@For(i:=1;i <= t_elements;i:=1+1;
--- Ende Code ---
Gruß,
Mitch
P.S.: Und der Zähler ist immer 2? Nicht lieber i := i + 1? ;)
smokyly:
:-X :-X :-X
Oh Mann! Bin ich......
Manchmal sollte ich doch ne Brille aufsetzen>!
VIELEN DANK!
Driri:
Möchtest Du immer die höchste Clientversion anzeigen oder interessiert dich, welcher Eintrag anhand des Datums der aktuellste ist ?
Für den ersten Fall könnte man das wesentlich einfacher aufbauen. Ich habe so etwas bei uns mal mit folgender Formel "Quick & Dirty" eingebaut :
--- Zitat ---_clntlist:=@Sort(ClntBld);
@Subset(_clntlist;-1)
--- Ende Zitat ---
Das ist keinesfalls perfekt, weil dabei z.B. ein Client 5.0.9 höher einsortiert würde, als ein Client 5.0.11. Da R5 aber das letzte Release mit so hohen Minorversionen war, habe ich das mal vernachlässigt.
Ab R10 würde das dann ebenfalls wieder kritisch. Ist halt die Frage, wofür man das braucht und wie lange man das braucht.
Ansonsten hat Ulrich da vor einiger Zeit mal einen guten Artikel in seinem Blog zu gepostet :
http://www.eknori.de/2008-02-02/domino-directory-people-by-client-version/
smokyly:
--- Zitat von: Driri am 04.04.11 - 16:45:31 ---Möchtest Du immer die höchste Clientversion anzeigen oder interessiert dich, welcher Eintrag anhand des Datums der aktuellste ist ?
--- Ende Zitat ---
Eigentlich ist das erstmal eine Spielerei als Übung, aber das Ziel ist die aktuellste Version zu erhalten. Wobei das nicht zu 100% mit der tatsächlich produktiv genutzten Version übereinstimmt.
Meine Kurzlösung sieht so aus:
--- Zitat ---ClntBld[@Member(@Text(@Max(ClntDate));@Text(ClntDate))]
--- Ende Zitat ---
Warum aber dies hier nicht funzt, ist mir immer noch nicht klar. Es kommt zwar ein Ergebnis, aber es stimmt nicht.
--- Zitat ---t_elements:=@Elements(ClntDate);
t_count:=0;
@If(
t_elements=0;t_count:=0;
(@For(i:=1;i<=t_elements;i:=i+1;
@If(i=1;t_date:=
@ToNumber(@Middle(@Text(ClntDate);6;4)+@Middle(@Text(ClntDate);3;2)+@Middle(@Text(ClntDate);0;2))
& t_count:=1;
@If(
@ToNumber(@Middle(@Text(ClntDate);6;4)+@Middle(@Text(ClntDate);3;2)+@Middle(@Text(ClntDate);0;2))
>t_date;t_date:=
@ToNumber(@Middle(@Text(ClntDate);6;4)+@Middle(@Text(ClntDate);3;2)+@Middle(@Text(ClntDate);0;2))
& t_count:=i;
"")
)
)
)
);
@If(t_count=0;"";ClntBld[t_count])
--- Ende Zitat ---
Das mit den Datumsoperationen ist mir noch nicht wirklich klar.
Gruß
Navigation
[0] Themen-Index
Zur normalen Ansicht wechseln