[?] Fehler "TypeError: Cannot read property 'returnType' of undefined"
Hallo Zusammen.
Ich arbeite an einer Trainingsdatenbank und möchte Trainingsergebnisse auf andere Distanzen umrechnen. (Die Formel ist in der Literatur zu finden).
Dazu habe ich unter "Globale Funktionsdefinitionen" folgende Funktion angelegt:
function getLaufzeit(myZeit : time,myDistanz : number,myDistanzVergleich : number) do
let ek := 1.07;
myZeit * pow(myDistanzVergleich / myDistanz, ek)
end;
Diese möchte ich in einem berechneten Feld wiefolgt aufrufen:
getLaufzeit('Split Zeit'; 'Split Distanz'; 5)
Allerdings bekomme ich folgende Fehlermeldung:
TypeError: Cannot read property 'returnType' of undefined
Was mache ich falsch?
Danke
OKraftDD
5 Antworten
-
Zur Erklärung (und möglicherweise einem besseren Verständnis):
myZeit
ist bswp.0:40:00
(also 40 Minuten)myDistanz
ist bzw.10
(also 10km)myDistanzVergleich
ist bspw.21,1
(also 21,1 km = Halbmarathon) -
Hallo OKraftDD,
Datentyp time definiert eigentlich die Uhrzeit. Deine Split Zeit sollte eigentlich den Datentyp timeinterval haben. Dieser Datentyp ist aber bei Funktionen nicht bekannt. Es ist eigentlich eine formatierte Zahl. Also, damit die Funktion funktioniert, solte man die Split Zeit als Zahl definieren:
---
function getLaufzeit(myZeit : number,myDistanz : number,myDistanzVergleich : number) do
let ek := 1.07;
myZeit * pow(myDistanzVergleich / myDistanz, ek)
end;
---
Die formel für berechnetes Feld wäre dann:
---
timeinterval(getLaufzeit(number('Split Zeit'); 'Split Distanz'; 5))
---
Allerding wird dir deine Zeit inklusive millisekunden (01:42:34.123). Wenn das für dich ok ist, dann warst das. wenn du die millisekunden nicht brauchst dann wäre die Formel:
---
timeinterval(round(getLaufzeit(number('Split Zeit'), 'Split Distanz', 5) / 1000) * 1000)
---
Leo
-
Hallo Leo,
vielen Dank für die ausführliche Antwort.
In diesem Fall hilft mir die Funktion nicht weiter. Von einer Funktion erwarte ich einen einfachen Aufruf. Wenn ich vorher auch noch umwandeln muss, dann ist mir das im Detail zu "kompliziert".
Wird es zukünftig möglich sein, den Datentyp timeinterval in eine globale Funktion zu übergeben?
Danke
OKraftDD
-
Hallo OKraftDD,
Ich weiß nicht ob und wann welche Funktionen umgesetzt werden, da solltest du besser Jungs von Ninox Suppport fragen.
Mit "zu kompliziert" verstehe ich nicht. Du muss so oder so einen Skript schreiben. Diesen schreibst einmal und dann übernimmt Ninox die Arbeit.
Leo
-
Hallo Leo,
das "kompliziert" bezieht sich auf den verschachtelten Aufruf.
Mir wäre es lieber gewesen, eine a) Funktion mit drei Parametern aufzurufen statt b) einer Funktion mit zwei weiteren ineinander verschachtelten Funktionen und einer in den Parametern enthaltenen Formeln.
Variante a) kann ich mir vermutlich merken, Variante b) wahrscheinlich eher nicht.
Besten Gruß
OKraftDD
Content aside
- vor 5 JahrenZuletzt aktiv
- 5Antworten
- 1928Ansichten