Das Notes Forum

Domino 9 und frühere Versionen => ND9: Entwicklung => Thema gestartet von: lusik am 19.12.17 - 17:05:10

Titel: @dblookup Suche und bei Nichtübereinstimmung den nächsten Wert nehmen
Beitrag von: lusik am 19.12.17 - 17:05:10
Hallo

Ich habe eine kleine Tabelle mit MwSt-Sätzen.

1. Spalte 2. Spalte
1.1.1995  6.5%
1.1.1996  6.5%
1.1.1999  7.5%
1.1.2001  7.6%
1.1.2011  8.0%
1.1.2018  7.7%

Gibt es in Notes eine Möglichkeit mit @dblookup die Tabelle zu durchsuchen und den Wert auszulesen, ohne das exakte Suchdatum zu verwenden? Beispiel: Mit der Suche nach dem 19.12.2017 müssten mir dann die Werte aus Zeile mit Datum 1.1.2011 ausgegeben werden.  (analog sverweis() in Excel)

Danke für jeden Hinweis.

Gruss lusik
Titel: Re: @dblookup Suche und bei Nichtübereinstimmung den nächsten Wert nehmen
Beitrag von: eknori am 19.12.17 - 20:23:56
@dblookup geht immer auf den Wert, der übergeben wird. Daher wird das so nicht funktionieren, wie du es dir vorstellst.

Mit script ließe sich was machen, aber mit @formula ...
Titel: Re: @dblookup Suche und bei Nichtübereinstimmung den nächsten Wert nehmen
Beitrag von: Peter Klett am 19.12.17 - 21:33:17
Du könntest mit zwei @DBColumns die beiden Spalten als Liste auslesen und dann mit einer @Do-Schleife durch die erste Liste gehen, bis das Datum passt und dann den entsprechenden Wert aus der zweiten Liste nehmen.
Titel: Re: @dblookup Suche und bei Nichtübereinstimmung den nächsten Wert nehmen
Beitrag von: lusik am 19.12.17 - 22:17:43
der Gedanke kam mir auch, aber ich hoffte auf eine einfachere Lösung ;-)  aber herzlichen Dank!

Gruss lusik
Titel: Re: @dblookup Suche und bei Nichtübereinstimmung den nächsten Wert nehmen
Beitrag von: ronka am 19.12.17 - 22:47:11
Mit den 2 @DBcolumn kannst du 2 felder füllen, MwStDatum und MwStSaetze.
Dann kannst du dir das berechnen z.B. mit folgenden @Formel.

EL := @Elements(MwStDatum);
@If( Datum <= MwStDatum[1] ; @Do( @SetField( "Wert" ; MwStSaetze[1] ) ; @Return("") ); "");
@If( Datum >= MwStDatum[EL] ; @Do( @SetField( "Wert" ; MwStSaetze[EL] ) ; @Return("") ); "");
Res := -1;
@For(i := 1; i <= EL; i := i + 1; @If ( MwStDatum <= Datum ; @If (MwStDatum[i+1] > Datum ; Res := i ; "") ; "" ) );
@If ( Res = -1 ; @Return(""); "" );
@SetField( "Wert" ; MwStSaetze[Res] );
@Command([ViewRefreshFields])
Titel: Re: @dblookup Suche und bei Nichtübereinstimmung den nächsten Wert nehmen
Beitrag von: lusik am 20.12.17 - 17:06:10
ganz herzlichen Dank! Das hilft weiter!

Gruss lusik