0

Berechnung von BMI-Referenzwerten

Moin Leute! Ich bin neu in der Ninox-Welt. Ich versuche eine Datenbank für eine gemeinnützige Organisation in Bolivien zu bauen, die sich um Kinder um hilfsbedürftige Kidner kümmert.

Es werden unteranderem Größe und Gewicht gemessen. Ich möchte nun den BMI ausrechnen und diesen dann automatische durch eine Berechnung bewerten lassen. Leider ist die Referenztabelle recht kompliziert, da der Referenz-BMI abhängig vom Alter ist. Dazu habe ich mal eine Tabelle hochgeladen:

 

Bildschirmfoto 2019-10-28 um 16.41.42_ BMI Referenztabelle Jungen

Ich komme mit meinem bisherigen Versuch mit einer case-Funktion nicht weiter:

Bildschirmfoto 2019-10-29 um 04.45.51

 

Kann mir jemand helfen und erklären wei ich die Funktion schreiben muss, um alle Altersstufen und BMI- Werte mitberücksichtige?

Vielen Dank und lieben Gruß aus Bolivien!

15 Antworten

null
    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo, meine spontane Idee wäre ja, die IMC-Werte (IMC = BMI?) in eine Extra-Tabelle zu schreiben (Import oder per Hand). Das wären pro Alterszahl fünf Datensätze mit folgendem Aufbau:

     

    Alter (Zahl, z. B. "8")

    IMCvon (Zahl, 1 Nachkommastelle, z. B. "0")

    IMCbis (Zahl, 1 Nachkommastelle, z. B. "12.4")

    Bedeutung (Auswahlfeld mit Text, z. B. "stark untergewichtig", und Farbzuordnung)

     

    Die Abfrage bzw. Anzeige in einem Funktionsfeld könnte dann in etwa so aussehen

    let myAge := Alter;
    let myIMC := IMC;
    let myText := first(select IMC_Werte where Alter = myAge and IMCvon <= myIMC and IMCbis >= myIMC);
    styled(myText.text(Bedeutung), myText.color(Bedeutung))

    • Julius
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Vielen Dank für deine Antwort!

    Genau, hier in Bolivien heißt BMI = IMC
    Das heißt ich lege eine Referenztabelle an? In etwa so:?

    Referenztabelle

    Ich habe diese Referenztabelle mit der Tabelle (1) verknüpft (2), in der die Angaben von Alter, Geschlecht, Gewicht und  Größe eingegeben werden und der IMC berechnet wird (3):

    Gewichtstabelle

    In das Berechnungsfeld habe ich versucht deinen Vorschlag zu übernehmen. Das klappt leider nicht ;(

    Bildschirmfoto 2019-10-29 um 15.52.17

    Hier noch die Übersicht der ganzen Tabellen, falls das eine Rolle spielen sollte:

    Übersicht

    Was habe ich falsch gemacht?

    Vielen Dank für die Hilfe!!!

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Julius, mit den langen spanischen Bezeichnungen ist es für mich etwas schwierig nachzuvollziehen, aber du adressierst in der select-Anweisung eine Tabelle namens 'IMC', die es wohl gar nicht gibt. Deshalb die Fehlermeldung. Wenn ich es richtig sehe, dann müsste dort statt dessen der Name der Tabelle mit den BMI-Werten stehen, also "tabla de referencies_IMC". Die Verknüpfung wird dazu nicht benötigt, und damit auch nicht die Angabe der verknüpften Tabelle vor den Feldbezeichnungen. Versuch es mal so:

     

    let myAge := Edad;
    let myIMC := IMC;
    let myText := first(select 'tabla de referencies_IMC' where Edad = myAge and 'IMC desde' <= myIMC and 'IMC hasta' >= myIMC);
    styled(myText.text(Evaluatión), myText.color(Evaluatión))

     

    Aber bitte noch mal auf Bezeichnungen und richtige Schreibweisen prüfen. ;)

     

    Nebenbei: Die von dir genutzten Werte stimmen nicht exakt mir denen der BMI-Tabelle oben überein. Dort steht bei 8 Jahren für "starkes Untergewicht" die Angabe "< 12.5". Wenn du nun auf "<=" abfragst, kommt es beim Wert "12.5" zu einer falschen Zuordnung. Ist wahrscheinlich nicht wichtig, aber es war mit halt aufgefallen, und da ich schon mal dabei war ...

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Ach so, sehe gerade, dass du im Auswahlfeld 'Evaluatión' neben einer Farbe auch ein Symbol angegeben hast. MAn müsste die styled()-Anweisung entsprechend erweitern - oder das Ganze gleich noch kürzer machen:

     

    let myAge := Edad;
    let myIMC := IMC;
    first(select 'tabla de referencies_IMC' where Edad = myAge and 'IMC desde' <= myIMC and 'IMC hasta' >= myIMC).'Evaluatión'

     

    Das sollte eigentlich auch funktionieren.

    • Julius
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Das hat super gekappt! vielen Dank :)

    • Julius
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Und schon ahbe ich die nächste Frage:

    Ich habe eine Tabelle erstellt, in der der Impfstatus der Kinder eingetragen wird. Ich habe die Impfungen (und den jeweiligen Impfdurchgang, wenn eine Impfung zum Beipiel drei mal verabreicht werden muss) als Auswahl- Felder definiert:

    Bildschirmfoto 2019-10-31 um 01.22.56

    Jetzt würd ich gern, dass in einem Feld (unteres Feld "Vacunaciones que faltan") automatisch alle Impfungen aufgelistet werden, die noch fehlen (die also in ihrem Auswahlfeld 2 bzw. "no" ausgewählt haben). Ich habe das weder mit einem Funktionsfeld, noch mit "nach Änderung folgendes Skript ausführen" hinbekommen.
    Hat jemand einen Tipp? Vielen Dank :)

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Julius,

    als Funktionsfeld:

    ----

    let myNames:=["BCG Tuberculosis","Antipolio 1/3","Antipolio 2/3","Antipolio 3/3","Pentalavente 1/3","Pentalavente 2/3", "Pentalavente 3/3","Antirotavirus 1/3","Antirotavirus 2/3","Antirotavirus 3/3","Antiamrarilica"];
    let myFields:=['BCG Tuberculosis','Antipolio 1/3','Antipolio 2/3','Antipolio 3/3','Pentalavente 1/3','Pentalavente 2/3', 'Pentalavente 3/3','Antirotavirus 1/3','Antirotavirus 2/3','Antirotavirus 3/3','Antiamrarilica'];
    let myDisplay:=for i in range cnt(myFields) do
    if item(myFields,i)=2 then item(myNames,i) end
    end;
    join(myDisplay,"
    ")

    ---

    Leo

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Die Einträge von Auswahlfeldern lassen sich leider nicht filtern. Du könntest aber verschiedene Auswahlfelder mit den entsprechenden Größen für "F", "G" und "H" erstellen, an der selben Stelle platzieren und je nach gewähltem Leisten ein- bzw. ausblenden. Die Bedingung bei "Feld nur anzeigen, wenn" für das Auswahlfeld "F-Größen" würde dann bspw. lauten:

     

    text(Leisten) = "F"

     

    Bei den anderen Größen-Auswahlfeldern dann eben "G" bzw. "H" statt "F". Und damit das Layout erhalten bleibt, kann man für den Fall, dass im Feld "Leisten" noch keine Auswahl getroffen wurde, einen Platzhalter an die Stelle setzen. Dessen Sichtbarkeitsbedingung wäre dann:

     

    not Leisten

     

    oder 

     

    Leisten = null

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Sorry, der letzte Kommentar gehörte eigentlich in einen anderen Thread. 😡

    • Julius
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hi Leo!

    vielen Dank für deine schnelle Hilfe :)
    Wenn ich es so eingebe, wie du vorgeschlagen hast, dann kommt folgende Fehlermeldung: " Eine Tabellenspalte wurde nich gefunden: range in Zeile 3, Spalte 29"

    Bildschirmfoto 2019-10-31 um 14.20.19

    Vielen Dank und lieben Gruß!

    • Birger_H
    • vor 4 Jahren
    • Gemeldet - anzeigen

    es sollte heißen:
    –––
    ...
    for i in range(0, cnt(myFields)) do
    ...
    –––

    • Julius
    • vor 4 Jahren
    • Gemeldet - anzeigen

    So klappt es :)
    Vielen Dank!

    • Julius
    • vor 4 Jahren
    • Gemeldet - anzeigen

    So klappt es :)
    Vielen Dank!

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Stimmt, ich habe die Klammern vergessen. Es ist aber so, dass Ninox automatisch bei 0 anfängt wenn in range nur eine Zahl steht:

    ---

    for i in range(cnt(myFields)) do

    ---

    Leo

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Danke für den Hinweis, Leo. Habe ihn gerade in der Referenz ergänzt.

Content aside

  • vor 4 JahrenZuletzt aktiv
  • 15Antworten
  • 2872Ansichten