0

"Ansteuern" der Einträge innerhalb Schleife

Moin zusammen,

ich steh anscheint ziemlich auf'm Schlauch...

Situation: in myICD halte ich ein Array an Einträgen aus der Tabelle 'ICD-Diagnosen', wo gewisse Kriterien zutreffen. In der Schleife soll das Array "durchlaufen" werden und die Werte von myICD1 (entspricht dem Wert myFirstICD.'ICD-Code') mit dem myICD (entspricht dem Wert i.'ICD-Code') verglichen und ggf. bei true myICD2 := myICD gesetzt werden.

Problemstellung: mit der Setzung myICD :=  i.'ICD-Code' setze ich mir doch immer wieder neu in die Variable myICD den 'ICD-Code' des "aktuellen" Eintrages innerhalb der Schleife oder? 

let me := this;
let c := "ersten ICD-Code aus Tabelle ICD-Diagnosen in Variable und in Feld 'ICD 1' setzen";
let myPPD := Pat_X_Prax_X_Date;
let myFirstICD := first(select 'ICD-Diagnosen' where myPPD = Pat_X_Prax_X_Date and Fall = me);
'ICD 1' := myFirstICD.'ICD-Code';
c := "restliche ICD Felder initialisieren";
let myICD1 := 'ICD 1';
let myICD2 := 'ICD 2';
let myICD := (select 'ICD-Diagnosen' where myPPD = Pat_X_Prax_X_Date and Fall = me);
for i in myICD do
let myiICD := i.'ICD-Code';
if myICD1 != myiICD then
myICD2 := myiICD end
end

Ich freue mich über jegliche Ideen und Anregungen :)

Lg
Jonas

8 Antworten

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

    Hallo Jonas, was genau soll das Skript denn bewirken? So wie es da oben steht, bewirkt es m. E. gar nichts. Denn wie du selbst sagst, wird die Variable(!) myICD2 bei jedem Durchlauf mit dem aktuellen i-Wert aus myICD überschrieben. Daten werden dadurch nicht geändert.

    • mirko3
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Ganz genau. Vorschlag. Wenn Du nun noch sehen willst, welches Ergebnis Deine Schleife liefert, dann ist es notwendig, die Variable myICD2 auch noch abzufragen, da Deine Schleife schlicht weg nur die Werteveränderung dieser Variablen vornimmt, also jeden, von myICD1 verschieden Wert nacheinander dort hineinschreibt. Du bekommst also den letzten, von myICD1 verschiedenen Wert des Arrays myICD geliefert. Alle vorherigen werden überschrieben. Wenn es das ist, was Du willst, dann:

    for i in myICD do
    let myiICD := i.'ICD-Code';
    if myICD1 != myiICD then
    myICD2 := myiICD end
    end;

    myICD2

    • Jonas_Zander
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Ach mensch... Danke euch beiden!! habe total verpeilt mir die Variable ausgeben zu lassen. 

    Dann klappt das einwandfrei mit dem Ansteuern der i-Werte. 

    • Jonas_Zander
    • vor 2 Jahren
    • Gemeldet - anzeigen

    nochmal moin zusammen,

    ich bin wieder mit meinen Ninox-Skills am Ende und komme null weiter...

    folgende Situation:

    Tabelle Fall mit Untertabelle 'ICD-Diagnosen' --> Verknüpfung daher von Fall mit 'ICD-Diagnosen' (1:N)

    ein Eintrag in Fall "hält" mehrere Einträge aus 'ICD-Diagnosen'. 

    Bildschirmfoto 2021-09-23 um 12.09.35

    jetzt versuche ich einen Code (befindet sich im Feld aktivICD, um getriggert zuwerden) zuschreiben, wo die Schleife ein Array (bestehend aus den Einträgen aus 'ICD-Diagnosen', die mit dem Falleintrag verbunden sind) durchläuft und jeden 'ICD-Code' in eins der Felder 'ICD 1', 'ICD 2',...., 'ICD 6' einnträgt. Genauer gesagt: wenn am Falleintrag 3 Einträge aus 'ICD-Diagnosen' hängen, dann wird nur das Feld 'ICD 1', 'ICD 2' und 'ICD 3' mit dem 'ICD-Diagnosen'.'ICD-Code' befüllt. 

    Bildschirmfoto 2021-09-23 um 12.08.14

     

    Ich habe es jetzt mit mehreren Varianten an if-Statements versucht, aber irgendwann habe ich die Übersicht verloren und dann mir die Felder mit den Werten überschrieben (wie man es in den oberen Abbildungen sieht)... es gibt bestimmt elegante Statements oder Funktionen in Ninox, die sowas einfacherer gestalten, nur leider kenne ich diese noch nicht :/

     

    Ich freue mich über jegliche Ideen und Anregungen :)

    Lg
    Jonas

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

    Vorschlag auf die Schnelle:

     

    let myA := 'ICD-Diagnosen'.'ICD-Code'
    'ICD 1' := item(myA, 0);
    'ICD 2' := item(myA, 1);
    'ICD 3' := item(myA, 2);
    'ICD 4' := item(myA, 3);
    'ICD 5' := item(myA, 4);
    'ICD 6' := item(myA, 5);

    • Leonid_Semik
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Jonas,

    ---

    let myArray:='ISD-Diagnosen';
    'ICD 1':=item(myArray,0).ICD;
    'ICD 2':=item(myArray,1).ICD;
    'ICD 3':=item(myArray,2).ICD;
    'ICD 4':=item(myArray,3).ICD;
    'ICD 5':=item(myArray,4).ICD;
    'ICD 6':=item(myArray,5).ICD

    ---
    end

    • Leonid_Semik
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Oder so wie Axel schreibt. 

    • Jonas_Zander
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Super! Vielen Dank euch beiden!! Funktioniert einwandfrei! 

Content aside

  • vor 2 JahrenZuletzt aktiv
  • 8Antworten
  • 475Ansichten