gröster Wert aus drei Feldern ermitteln

7. Oktober 2011 09:25

Hallo

In meiner Tabelle habe ich drei Decimal Felder.

Alle drei Felder sind mit Werten gefüllt.

Gibt es eine Befehl der mit den grösten Wert der drei Werten bestimmt?

Beispiel

Wert Feld A : 1,33
Wert Feld B : 4.44
Wert Feld C : 1,33

Ich will nun ein weiteres Feld mit dem Wert 4,44 füllen

Re: gröster Wert aus drei Feldern ermitteln

7. Oktober 2011 09:33

Nein, du musst alle Datensätze durchlaufen und dir in einer Variable den höchsten Wert merken.

Re: gröster Wert aus drei Feldern ermitteln

7. Oktober 2011 09:35

Hi Natalie,

wieso alle Datensätze durchlaufen?

Ich habe nur einen Datensatz in den die drei Felder A,B,C mit Werten gefüllt sind.

Ich will innerhalb eines Datensatz den grösten Wert der drei Feldern ermitteln.

Gruß

Re: gröster Wert aus drei Feldern ermitteln

7. Oktober 2011 09:42

Be hat geschrieben:Hi Natalie,

wieso alle Datensätze durchlaufen?

Ich habe nur einen Datensatz in den die drei Felder A,B,C mit Werten gefüllt sind.

Ich will innerhalb eines Datensatz den grösten Wert der drei Feldern ermitteln.

Gruß

Sorry :-)
Dann musst du halt dir in einer Variable den größten Wert innerhalb der drei Felder merken ... oder dir eine Funktion schreiben, die ganu das macht. Eine Standardfunktion hierzu gibt es jedenfalls nicht.

Re: gröster Wert aus drei Feldern ermitteln

7. Oktober 2011 09:55

Es gibt dafür keine Funktion. Wenn sich das Ganze wirklich nur auf drei Werte beschränkt könntest du es wie folgt machen:
Code:
MeinMaxWert := A;
IF MeinMaxWert < B THEN
  MeinMaxWert := B;
IF MeinMaxWert < C THEN
  MeinMaxWert := C;
Zielfeld := MeinMaxWert;


Wenn du aber weißt, dass du das viel öfter brauchst, dann könntest du dir überlegen eine Funktion mit Arrays (Bubblesort oder ähnliches) oder, noch besser, temporäre Tabellen benutzen.

Re: gröster Wert aus drei Feldern ermitteln

7. Oktober 2011 15:46

Eine sehr elegante Variante ist, sich hierfür eine Funktion Min(Wert1,Wert2) anzulegen.
Code:
Min(Wert1 : Decimal, Wert2 : Decimal) : Decimal
IF Wert1 < Wert2 THEN
  EXIT(Wert1);
EXIT(Wert2);


Diese Funktion kann man dann für beliebig viele zu vergleichende Werte verwenden, indem man die Aufrufe entsprechend verschachtelt:
Code:
KleinsterWert := Min(FeldA,Min(FeldB,FeldC));

Der Trick dabei:
Als erstes werden die letzten beiden Felder (B + C) miteinander verglichen.
Der kleinere Wert davon wird anschließend mit dem Feld A verglichen.
Der kleinere Wert landet dann in der Zuweisung.

Hat man nun z. B. fünf Werte, dann sieht der Aufruf wie folgt aus:
Code:
KleinsterWert := Min(FeldA,Min(FeldB,Min(FeldC,Min(FeldD,FeldE))));