Bitte um Hilfe bei einer Berechnung
Ninox Profile

Liebes Forum,

leider hatte mir auf meine Anfrage in der vergangenen Woche niemand geantwortet:

Ich habe weiterhin das Problem, dass ich bei einer Berechnung nicht weiter komme und hoffe, dass mir hier jemand weiterhelfen kann, bzw. einen kleinen Tipp geben kann, wie ich Zahlen aus anderen Tabellen für eine Berechnung auswählen kann.

 

Ich habe zwei Tabellen:

 

01_Zeitschriften-Datenbanken

02_Kostenentwicklung

In der ersten Tabelle möchte ich nun gerne eine Übersicht, wie sich die Preise einer Zeitschrift prozentual in den letzten Jahren verändert haben.

In der zweiten Tabelle erfasse ich Rechnungen.

Nun würde ich gerne in der Tabelle 01_Zeitschriften-Datenbanken eine Formel anwenden, die mir den Betrag einer Zeitschrift in einem Jahr (z.B.) 2019 und in einer bestimmten Form ausgibt.

In Tabelle 02_Kostenentwicklung habe ich dazu die Felder "Format" (Auswahlfeld 1 = Print, 2 = Elektronisch), "Jahr" (Auswahlfeld 1= 2016, 2 = 2017...) und natürlich ein Feld "Bruttopreis".

In Tabelle 01_Zeitschriften-Datenbanken würde ich nun gerne berechnen:

"Bruttopreis" im "Jahr" für "Format"

Den Rest der Berechnung habe ich soweit schon fertig. Ich möchte nur nicht weiter den Bruttopreis weiter in der Rechnung und in einem weiteren Feld ergänzen und hoffe hier auf eure Unterstützung.

Für eure Hilfe und eine kurze Antwort bedanke ich mich an der Stelle vorab recht herzlich.

Liebe Grüße

Mathias

Ninox Profile

Hallo, wenn(!) ich es richtig verstehe, dann müsste es in beiden Tabellen doch zumindest jeweils auch noch ein Feld geben, über das sie miteinander verknüpft werden können. Z. B. Titel, ISSN o. ä. Außerdem stellt sich die Frage, woher die Filter für Jahr und Format kommen. Auch aus (einfachen) Auswahlfeldern mit denselben Werten wie in der Tabelle '02_Kostenentwicklung'? Dann könnte es bspw. so funktionieren:


let myISSN := ISSN;
let myJahr := text(JAHR);
let myFormat := text(FORMAT);
first((select '02_Kostenentwicklung' where ISSN = myISSN and text(Jahr) = myJahr and text(Format) = myFormat).Bruttopreis)

Ninox Profile

Hallo Copytexter,

vielen vielen Dank schon einmal für deine Hilfe. Ein Feld, über das beide Tabellen verknüpft sind habe ich leider nicht. Ich habe "nur" die Anzeige der Verknüpfungen:

01_Zeitschriften-Datenbank mit 02_Kostenentwicklung (1:N)

02_Kostenentwicklung mit 01_Zeitschriften-Datenbank (N:1)

Die Felder Jahr und Format sind jeweils Auswahlfelder, die innerhalb jeder Rechnung erfasst werden.

Anstatt der ISSN habe ich es einmal mit dem automatischen Nummernfeld versucht und deine Formel versucht:

let myNr := Nr;
let myJahr := text(2018);
let myFormat := text("Elektronisch");
first((select '02_Kostenentwicklung' where Nr = myNr and text(2018) = myJahr and text("Elektronisch") = myFormat).Bruttobetrag)

 

Leider erhalte ich hierbei keinerlei Rückgabewert. Auch der Versuch first durch sum zu ersetzen führt lediglich zu dem Ergebnis 0 :o(.

 

Es tut mir leid, dass ich hier scheinbar auf dem Schlauch stehe und alleine nicht wirklich weiter komme. Ich hoffe, dass mir hier noch einmal jemand helfen kann.

Liebe Grüße

Mathias

 

Ninox Profile

Okay, verknüpft sind die Tabellen immerhin. Dann nehmen wir statt der ISSN die Nummer des aktuellen Datensatzes in '01_Zeitschriften-Datenbanken' und fragen das Verknüpfungsfeld danach ab:


let myRec := this;
let myJahr := "2018";
let myFormat := "Elektronisch";
first((select '02_Kostenentwicklung' where '01_Zeitschriften-Datenbanken' = myRec and text(Jahr) = myJahr and text(Format) = myFormat).Bruttopreis)


Solltest du den Namen der Verknüpfung geändert haben, müsstest du '01_Zeitschriften-Datenbanken' halt entsprechend ersetzen.

Ninox Profile

Hallo Copytexter,

 

SUPER!!!! Vielen, vielen Dank. Die Formel funktioniert einwandfrei und ersprart mir zukünftig auf jeden Fall viel Doppeleingabe.

Hoffe, ich kann mich irgendwann einmal revanchieren.

LG

Mathias

Ninox Profile

👍

Ninox Profile

Hallo Copytexter,

ich hoffe, dass du oder jemand anderes mir hier noch einmal helfen kannst. Mir ist mittlerweile aufgefallen, dass bei der Berechnung eines Felder (Print oder Elektronisch) immer nur der erste Rechnungsdatensatz betrachtet wird. Es kommt jedoch vor, dass ich in den Kategorien auch mehrere Datensätze pro Jahr anfallen.

Kann mir hier jemand helfen, wie ich die Formel an der Stelle anpassen kann?

let myRec := this;
let myJahr := "2018";
let myFormat := "Elektronisch";
first((select '02_Kostenentwicklung' where '01_Zeitschriften-Datenbanken' = myRec and text(Jahr) = myJahr and text(Format) = myFormat).Bruttopreis)

Danke und liebe Grüße

Mathias

Ninox Profile

Hallo Mathias,

 

wie wär's mit

 

sum((select '02_Kostenentwicklung' where '01_Zeitschriften-Datenbanken' = myRec and text(Jahr) = myJahr and text(Format) = myFormat).Bruttopreis)

 

??

 

lg, Torsten

Ninox Profile

Hallo Torsten,

vielen vielen Dank. "Sum" hatte ich heute morgen auch ausprobiert und irgendwie hatte er mir hier eine Fehlermeldung ausgegeben. Nun funktioniert es aber einwandfrei. Wahrscheinlich hatte ich hier einen Fehler gemacht.

Für deine Hilfe aber ein dickes, fettes DANKESCHÖN.

LG

Mathias

Reply