Autor Thema: Formel in Ansichtsspalte bringt kein Ergebnis  (Gelesen 2040 mal)

Offline smokyly

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.169
  • Geschlecht: Männlich
  • Nicht jeder ist ersetzbar.
Formel in Ansichtsspalte bringt kein Ergebnis
« am: 04.04.11 - 14:30:15 »
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"

Person:
Zitat
@Trim(@Subset(LastName;1))+@If(Firstname !="";" , "+@Trim(@Subset(FirstName;1));"")+@If(MiddleInitial !="";" "+@Trim(@Subset(MiddleInitial;1));"")

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))

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ß
Geri

Mitch

  • Gast
Re: Formel in Ansichtsspalte bringt kein Ergebnis
« Antwort #1 am: 04.04.11 - 14:45:56 »
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;

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;

Gruß,

Mitch

P.S.: Und der Zähler ist immer 2? Nicht lieber i :=  i + 1? ;)

Offline smokyly

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.169
  • Geschlecht: Männlich
  • Nicht jeder ist ersetzbar.
Re: Formel in Ansichtsspalte bringt kein Ergebnis
« Antwort #2 am: 04.04.11 - 14:54:32 »
 :-X :-X :-X

Oh Mann! Bin ich......
Manchmal sollte ich doch ne Brille aufsetzen>!


VIELEN DANK!
Geri

Driri

  • Gast
Re: Formel in Ansichtsspalte bringt kein Ergebnis
« Antwort #3 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 ?

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)

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/

Offline smokyly

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.169
  • Geschlecht: Männlich
  • Nicht jeder ist ersetzbar.
Re: Formel in Ansichtsspalte bringt kein Ergebnis
« Antwort #4 am: 05.04.11 - 09:44:22 »
Möchtest Du immer die höchste Clientversion anzeigen oder interessiert dich, welcher Eintrag anhand des Datums der aktuellste ist ?

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))]

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])
Das mit den Datumsoperationen ist mir noch nicht wirklich klar.

Gruß
Geri

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz