0

[?] 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

null
    • okraftdd
    • vor 5 Jahren
    • Gemeldet - anzeigen

    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)

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    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

    • okraftdd
    • vor 5 Jahren
    • Gemeldet - anzeigen

    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

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    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

    • okraftdd
    • vor 5 Jahren
    • Gemeldet - anzeigen

    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