Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: MarGar1981 am 26.06.13 - 13:25:51

Titel: Größer als Problem
Beitrag von: MarGar1981 am 26.06.13 - 13:25:51
Hallo zusammen.

Ich benötige mal einen Ansatz den ich leider selber nach drei Stunden nicht finde.
Ich benötige eine Formel die folgendes berechnet:

Feld1 = Alter
Feld2 = Altersklasse

Im Feld2 soll durch das Feld1 die Altersklasse berechnet werden.


Alter           Altersklassse
18 – 19        Klasse 18
20 – 24        Klasse 20
25 – 29        Klasse 25
30 – 34        Klasse 30
35 – 39        Klasse 35
40 – 44        Klasse 40
45 – 49        Klasse 45
50 – 54        Klasse 50
Titel: Re: Größer als Problem
Beitrag von: Driri am 26.06.13 - 13:34:13
"Klasse " + @Left(Feld1;2)

 ;)
Titel: Re: Größer als Problem
Beitrag von: ascabg am 26.06.13 - 13:38:16
@Driri,

Jetzt bin ich mal gemein.  ;D
Was wird denn dann bei 100-jaehrigen gemacht?

@MarGar1981
Wie steht denn das Alter im Feld1?


Andreas
Titel: Re: Größer als Problem
Beitrag von: Keydins am 26.06.13 - 13:41:05
Und was passiert, wenn Feld 1 vom Benutzer ausfüllbar ist und er nicht 18 - 19 schreibt, sondern 19?  ;D

Gruß
Dirk
Titel: Re: Größer als Problem
Beitrag von: tks am 26.06.13 - 13:53:53
Berechnungsformel für Feld2 (vorausgesetzt Feld1 = Zahl):

@If(Feld1 < 20;"Klasse 18";Feld1>19 & Feld1 < 25;"Klasse 20";....;Feld1>54;"Klasse 50")
Titel: Re: Größer als Problem
Beitrag von: Driri am 26.06.13 - 13:58:55
Pff, ihr Zweifler. Zumindest für den aufgeführten Fall paßt die Formel. Außer, das war mißverständlich bzw. nicht sauber formuliert.

Man kann natürlich auch alles unnötig komplizieren ;D
Titel: Re: Größer als Problem
Beitrag von: ascabg am 26.06.13 - 14:05:54
@Diri
Nicht boese gemeint.

Natuerlich passt Deine Formel fuer den beschriebenen Fall. Sofern die Eingabe, am besten eine Auswahl,  in Feld1 immer
das Format 18 - 19; 20 - 21; 22 - 23; usw. hat und kleiner 100 ist.

Probleme gibt es dann jedoch sofort, wenn die Eingabe im Feld1 manuell erfolgen kann und hier
eine 19; eine 21; eine 23; usw. eingegeben wird.

Am besten ist es, dass uns der Fragesteller einmal mitteilt, wie die Eingaben in Feld1 erfolgen.


Andreas
Titel: Re: Größer als Problem
Beitrag von: Driri am 26.06.13 - 14:28:18
Zitat
Nicht boese gemeint.

Weiß ich doch  ;)

Ich war jetzt dreisterweise davon ausgegangen, daß Feld 1 auch genau so einen Wert aus der Tabelle enthält (also z.B. "18 - 19"). Ich muß gestehen, ich hatte die Frage auch nur überflogen - Mea culpa  :-[
Titel: Re: Größer als Problem
Beitrag von: Peter Klett am 26.06.13 - 21:39:20
"Klasse " + @Trim (@Left (Feld1 + "-"; "-"))

sollte alles abdecken.

18 - 19   -> Klasse 18
18-19     -> Klasse 18
18          -> Klasse 18
100-110 -> Klasse 100
usw.

Die Klasseneinteilung sieht nach Wettkampf aus, beim Laufen gibt es genau diese Einteilung ...

EDIT: War etwas zu spät gestern. Vermutlich wird doch im Feld 1 das Alter eingegeben, dann würde ich auch eine Formel verwenden, wie Thomas eingestellt hat, allerdings würde ich sie etwas einfacher halten:

"Klasse " + @If(Feld1 < 20;"18";Feld1 < 25;"20";....;"50")

Da beim @If nach der ersten erfüllten Bedingung die Formel beendet wird, genügt es, entweder von unten nach oben auf "kleiner" abzufragen, oder von oben nach unten auf "größer". Bleibt dann nur noch die Überprüfung auf ungültige Werte, z.B. Alter 17 käme mit der Formel in Klasse 18, gehört dort aber nicht hinein.
Titel: Re: Größer als Problem
Beitrag von: MarGar1981 am 27.06.13 - 08:17:53
Richtig! Es handelt sich um ein Wettkampt  :)

Besten dank für die Lösung.

Das habe ich nun daraus gemacht:

Code
@If(

	Alter_1 < 20;"Klasse 18";Alter_1>19 & Alter_1 < 25;"Klasse 20";
	Alter_1 < 25;"Klasse 20";Alter_1>24 & Alter_1 < 30;"Klasse 25";
	Alter_1 < 30;"Klasse 25";Alter_1>29 & Alter_1 < 35;"Klasse 30";
	Alter_1 < 35;"Klasse 30";Alter_1>34 & Alter_1 < 40;"Klasse 35";
	Alter_1 < 40;"Klasse 35";Alter_1>39 & Alter_1 < 45;"Klasse 40";
	Alter_1 < 45;"Klasse 40";Alter_1>44 & Alter_1 < 50;"Klasse 45";
	Alter_1 < 50;"Klasse 45";Alter_1>49 & Alter_1 < 55;"Klasse 50";
	Alter_1 >54;"Klasse 50";.....)

Okay der Schluss ist nicht sauber aber es läuft.

Nun möchte ich aber das bei der Ausgabe nicht --Klasse 18-- steht sondern nur --18--.
Wenn ich auf der Formel -- Klasse -- einfach lösche bekomme ich bei der Ausgabe immer
SELECT 50 und dabei stört mich dann natürlich das SELECT.

Titel: Re: Größer als Problem
Beitrag von: Peter Klett am 27.06.13 - 09:04:17
Das mit dem SELECT verstehe ich nicht, wo hast Du denn die Formel eingetragen?

So würde ich die Formel schreiben

Code
@If(
	 Alter_1 < 20;"18";
	 Alter_1 < 25;"20";
	 Alter_1 < 30;"25";
	 Alter_1 < 35;"30";
	 Alter_1 < 40;"35";
	 Alter_1 < 45;"40";
	 Alter_1 < 50;"45";
	 "50")
Titel: Re: Größer als Problem
Beitrag von: MarGar1981 am 27.06.13 - 09:55:05
Ich habe nun eine neue Maske in einer neuen Datenbak erstellt.
Das Problem mit SELECT habe ich weiterhin.

Feld 1    Alter_1
Typ        Zahl      Bearbeitbar

Feld 2    Altersklasse
Typ        Formel   Berechnet

Eingabe Alter_1 = 21

Wenn ich dann mit F9 die Maske aktualisiere kommt als Ausgabe in Feld Altersklasse SELECT 20


Titel: Re: Größer als Problem
Beitrag von: Tode am 27.06.13 - 10:04:18
Welche Formel hast Du denn jetzt in Altersklasse? Das "SELECT" kann ja nur von Deiner Formel kommen...
Titel: Re: Größer als Problem
Beitrag von: MarGar1981 am 27.06.13 - 10:17:58
Ich habe im Feld Altersklasse nur folgende Formel drinnen:


Eingabe: 19

Code
@If(
	 Alter_1 < 20;"18";
	 Alter_1 < 25;"20";
	 Alter_1 < 30;"25";
	 Alter_1 < 35;"30";
	 Alter_1 < 40;"35";
	 Alter_1 < 45;"40";
	 Alter_1 < 50;"45";
	 "50")

Ausgabe: SELECT 18



Wenn ich aber folgendes verwende:

Eingabe: 19

Code
@If(
	 Alter_1 < 20;"Klasse 18";
	 Alter_1 < 25;"Klasse 20";
	 Alter_1 < 30;"Klasse 25";
	 Alter_1 < 35;"Klasse 30";
	 Alter_1 < 40;"Klasse 35";
	 Alter_1 < 45;"Klasse 40";
	 Alter_1 < 50;"Klasse 45";
	 "50")

Ausgabe: Klasse 18


Wenn ich also mit Buchstaben und einem Leerzeichen vor der Zahl arbeite kommt kein SELECT bei der Ausgabe.
Titel: Re: Größer als Problem
Beitrag von: Peter Klett am 27.06.13 - 10:56:28
Zeig mal einen Screenshot aus dem Designer von dem Feld "Altersklasse" und seiner Formel
Titel: Re: Größer als Problem
Beitrag von: Tode am 27.06.13 - 10:57:37
Dein Feld "Altersklasse" ist aber nicht zufällig eine "Dialogliste" oder ähnliches, und Du hast als mögliche Auswahlen irgendwas mit "SELECT" hinterlegt?
Titel: Re: Größer als Problem
Beitrag von: MarGar1981 am 27.06.13 - 15:42:01
Hier mal der Screenshot.

Titel: Re: Größer als Problem
Beitrag von: ascabg am 27.06.13 - 15:44:14
Hallo,

Falscher Feldtyp.

Besser eventuell: Feldtyp = "Text" und das Feld an sich "Berechnet" bzw. "Berechnet zur Anzeige" (wenn es nicht in Ansichten
angezeigt werden soll)


Andreas
Titel: Re: Größer als Problem
Beitrag von: MarGar1981 am 27.06.13 - 15:49:08
Nun bekomme ich das wenn ich auf Typ "Text" umstelle.

Ich hänge mal die Datenbank einfach an.
Titel: Re: Größer als Problem
Beitrag von: Tode am 27.06.13 - 16:08:35
Ein wenig Eigeninitiative wäre nicht schlecht (und eine Basis- Schulung dieser absoluten Basics by the way auch nicht)...

Was steht denn in der Meldung "Zwei Werte des selben Datentyps"... Kann es sein, dass Dein Feld "Alter_1" ein TEXTFELD ist, und Du das mit einer ZAHL vergleichst? Also tatsächlich zwei verschiedene Datentypen?
Titel: Re: Größer als Problem
Beitrag von: MarGar1981 am 27.06.13 - 16:13:14
Schulungen hatte ich wirklich schon aber ich habe im Jahr super wenig Zeit um was zu machen.

Alter_1 ist vom Typ her eine Zahl.

Es klappt ja auch fast alles wenn ich nicht das durchführe was am Datum/Zeit: Heute um 15:44:14 geschrieben wurde.

Nur dann kommt halt das mit dem SELECT. Hätte ich einen Ansatz, dann würde ich auch rumtesten nur heute ist mal wieder so ein Tag wo das Telefon nicht aufhören möchte zu klingeln.
Titel: Re: Größer als Problem
Beitrag von: Driri am 27.06.13 - 16:16:48
Nur mal zur Sicherheit :

Alter_1 = Zahl

Altersklasse = Text, Berechnet


Sind die Felder so gesetzt ? Oder hast Du eben evtl. nach dem Hinweis mit Typ = Text das Feld Alter_1 auf Text gesetzt ? Das würde zumindest die Fehlermeldung erklären.
Titel: Re: Größer als Problem
Beitrag von: Tode am 27.06.13 - 16:36:39
Probiers mal mit einem Vorgabewert für Alter_1... Ohne vorgabewert ist das "" und "" lässt sich nicht mit 10 vergleichen.
Optimalerweise fängt man sowas ab:

Code
_alter := @If( Alter_1 = "" | !@IsNumber( Alter_1 ); 0 ; Alter_1 );
If(
	 _alter < 20;"18";
	 _alter < 25;"20";
	 _alter < 30;"25";
	 _alter < 35;"30";
	 _alter < 40;"35";
	 _alter < 45;"40";
	 _alter < 50;"45";
	 "50")