Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: RalfK am 25.01.05 - 17:51:24
-
Hallo,
ich habe ein kleines Problem mit den Spalten einer Ansicht. Dort ist die führende Spalte die Kalenderwoche. Absteigend sortiert. Nur leider hängt er zB die 10 ans Ende der 1 das Ganze sieht in etwa so aus:
1
1
1
1
10
11
11
2
2
3
3
3
31
anscheinend zählt er nur den vorderen Wert einer Zahl. Wie kann ich das abstellen? Über die Eigenschaften scheints nicht zu klappen. Auch wenn ich die Kalenderwoche berechnen lasse, sortiert er weiterhin so. Auch wenn ich manuell zwischen auf und absteigend sortieren lasse.
Grüße
Ralf
-
Ergebnis ist wohl Text und nicht Zahl ?
Mach mal einen @TextToNumber() drumherum.
Wenn also in der Spaltenformel z.B. steht:
Kalenderwoche
Dann schreibst Du
@TextToNumber(Kalenderwoche)
-
Das ist eindeutig eine "Zahl" in einem Textfeld.
Ich kann nur dringend empfehlen, Werte immer entsprechend ihrer Datentypen zu speichern. Zahlen als Text machen Ärger (wie Du siehst), Datums-/Zeitangaben als Text sind VERHEEREND (insbesondere in internationalen Umgebungen, aber selbst lokal kann man nicht immer verhindern, dass der Anwender seine OS-Einstellungen "spassenshalber" mal ändert).
Bernhard
-
Wenn es denn unbedingt Zahl als Text sein muss, dann folgenden Workaround
@Right("0" + KW;2)
Das stellt eine führende Null voran, sofern die KW einstellig ist.
Andreas
-
Verdammt. Ich bin aber auch sowas von blind. Da sucht man stundenlang ob irgendwie die Formeln nicht stimmen oder die Spalten in der Ansicht falsch sind und dann steht wirklich in diesem Feld ein kleines "T". ::)
Dank für die Hilfe. :)
Ralf
-
Nach längerer Pause habe ich mich mal daran gesetzt und den Feldwert der Maske von Text auf Zahl geändert.
Danach habe ich ein RefreshAllDocuments drüber rennen lassen.
Leider ist die Sortierung immer noch nicht richtig, sondern weiterhin wie im ersten Post beschrieben.
Was nun?
Grüße
Ralf
-
Du bist Dir wirklich 100% sicher, dass
- Der Datentyp des Feldes in allen Dokumenten "Number" ist?
- In der Spaltenformel nur der Name des Feldes steht?
- Der programmatische Name in der Spalte eindeutig ist?
Falls ja, dann muss auch die Spaltensortierung funtionieren. Wenn Du nicht weiterkommst, kannst Du ja auch mal die DB mit 3-4 Testdokumenten hier reinhängen.
-
Genau das sind die Punkte, und mit einem RefreshAllDocuments wird kein Datentyp eines bestehenden Eintrages geändert, es sei denn, es ist ein berechnetes Feld.
-
Hallo. Hier hab ich mal die Formel für das Kalenderfeld. Wie gesagt, zuerst war es ein Textfeld (berechnet). Damit wurden dann diverse Dokumente eingepflegt.
Ich habe jetzt das Feld in Zahl/berechnet geändert und ein neues Dokument erstellt. Trotzdem sortiert er es nicht und behandelt es wie einen Text. Hier die Formel (danke an Eknori für die Grundformel):
FirstOfYear := @Date(@Year(Datum); 1; 1);
LastOfYear := @Date(@Year(Datum); 12; 31);
FirstDayNum := @Weekday(FirstOfYear);
LastDayNum := @Weekday(LastOfYear);
ISOFirstDayNum := @If(FirstDayNum = 1; 7; FirstDayNum - 1);
ISOLastDayNum := @If(LastDayNum = 1; 7; LastDayNum - 1);
IsFirstWeek := 7 - ISOFirstDayNum > 2;
IsLastWeek := 7 - ISOLastDayNum < 4;
ISOFirstDay := @If(IsFirstWeek;
@Adjust(FirstOfYear; 0; 0; 1 - ISOFirstDayNum; 0; 0; 0);
@Adjust(FirstOfYear; 0; 0; 8 - ISOFirstDayNum; 0; 0; 0));
ISOLastDay := @If(IsLastWeek;
@Adjust(LastOfYear; 0; 0; 7 - ISOLastDayNum; 0; 0; 0);
@Adjust(LastOfYear; 0; 0; -ISOLastDayNum; 0; 0; 0));
FirstWeekNextYear := @If(Datum > ISOLastDay; @Return(@Prompt([OK]; "FWNY";
@Text(@Year(D)+1) + "W01")); NULL);
LastWeekLastYear := (Datum - @Adjust(FirstOfYear; -1; 0; 0; 0; 0; 0))/60/60/24/7;
AdjustLastWeek := 1 - (LastWeekLastYear - @Integer(LastWeekLastYear));
@Set("LastWeekLastYear"; LastWeekLastYear + AdjustLastWeek);
@If(Datum < ISOFirstDay;
@Return(@Prompt([OK]; "LWLY"; @Text(@Year(Datum) - 1) + "W" +
@Text(LastWeekLastYear))); NULL);
NumWeeks := (Datum - ISOFirstDay)/60/60/24/7;
WeekAdjust := 1 - (NumWeeks - @Integer(NumWeeks));
ISOWeekNum := NumWeeks + WeekAdjust;
Pad:=@If(ISOWeekNum<10;"0";"");
Result := @Text(ISOWeekNum);
Result
Muss ich ansonsten in dieser Formel noch eine TexttoNumber(Result) einbauen?
Grüße
Ralf
-
Mit
Result := @Text(ISOWeekNum);
verlangst Du doch selbst ausdrücklich, dass die ISOWeekNum in Text umgewandelt wird ...
Bernhard
-
Dank dir vielmals. Klappt jetzt ohne Probleme. Hab das übersehen.
Ralf