0

dialog fenster per cases durch verschiedene Datensätze möglich?

TABELLE 1 ist mit TABELLE 2 verknüpft (Tabelle 2 ist eine Komposition). Pro Datensatz in Tabelle 1 kann Tabelle 2 kann mehrere Datensätze beinhalten.

Eine Bedienschaltfläche in TABELLE 1 öffnet einen dialog und zeigt den Inhalt eines TEXTFELDES aus dem letzten Datensatz von Tabelle 2 an. 

Nun würde ich gerne 3 Möglichkeiten haben: FERTIG, ZURÜCK und WEITER..

FERTIG ist selbsterklärend und beendet den dialog,

ZURÜCK durchkämmt das Textfeld aus den diversen Datensätzen von Tabelle 2 in einer Schleife durch..z.B. 5-4-3-2-1-5-4-3-2-1-5-4-3-2-1... 

WEITER macht das gleiche in die andere Richtung.

Ich dachte eventuell an eine WHILE/ SWITCH Kombo. Ist das realisierbar? 

Freue mich. Danke

16 Antworten

null
    • Morris_Hanson
    • vor 5 Jahren
    • Gemeldet - anzeigen

    ich müsste es eigentlich nur schaffen mit den buttons weiter oder zurück im dialog immer den nächststehenden datensatz in der tabelle 2  ansprechen zu können. vielleicht hat jemand eine idee..? mein Hirn raucht.. 

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    let myFirst := ["FERTIG", "WEITER"];
    let myNext := ["FERTIG", "WEITER", "ZURÜCK"];
    let myLast := ["FERTIG", "ZURÜCK"];
    var myFlag := 0;
    let myArr := 'Tabelle 2'.Textfeld;
    let myCNT := cnt(myArr);
    while myFlag != myCNT do
    switch dialog("Text", item(myArr, myFlag), switch myFlag do
    case 0:
    myFirst
    case myCNT - 1:
    myLast
    default:
    myNext
    end) do
    case "WEITER":
    (myFlag := myFlag + 1)
    case "ZURÜCK":
    (myFlag := myFlag - 1)
    case "FERTIG":
    (myFlag := myCNT)
    end
    end

    • Morris_Hanson
    • vor 5 Jahren
    • Gemeldet - anzeigen

    DANKE! LEO! Ich habe leider vergessen zu erwähnen, dass ich mich bei der Abfrage in Tabelle 2 befinde :)

     

    Lg Rene

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Rene,

    fünfte Zeile von Oben:

    let myArr := 'Tabelle1'.'Tabelle 2'.Textfeld;

    Leo

    • Morris_Hanson
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Ahh.. ja klar. DANKE.

    Habe leider noch ein Problem damit.. der Sachverhalt, den ich in myArr darstellen will ist komplexer, da es mehrere Textfelder sind, und weiters auch "Text".. z.B. 

    let myArr := "Dokumentation: " + Tabelle1.Tabelle2'.Dokumentation + "

    " + "Datum: " + Tabelle1.Tabelle2.Datum + "

    " + KG: " + Tabelle1.Tabelle2.KG;

     

    Leider bekomme ich das so nicht hin. LG Rene

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    let myArr := Tabelle1.Tabelle2.("Dokumentation: " + Dokumentation + "

    Datum: " + Datum + "

    KG: " + KG);

    • Morris_Hanson
    • vor 5 Jahren
    • Gemeldet - anzeigen

    JA GENAU!!! 

    SUPER! DANKE

    Ps. Fällt dir noch eine kleine Änderung ein, damit der Dialog nicht beim ersten Datensatz anfängt, sondern beim vorletzten.. Damit ich sozusagen - wenn ich im 10ten Datensatz auf den Button klicke, der 9te im Dialog erscheint und ich von dort weiter in die Vergangenheit gehen kann?

    GANZ LIEBE GRÜßE und DANKE, Rene

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Rene,

    wenn die Datensätze nach ID sortiert sind dann statt vierte Zeile:

    ---

    let my:=this;

    var myFlag:=cnt(Tabelle1.Tabelle2[number(Nr)<number(my.Nr)])-1;

    myFlag:=if myFlag<0 then 0 else myFlag;

    ---

    Leo

    • Morris_Hanson
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Leo, es funktioniert. DANKE DU BIST DER BESTE!!!

    LEO FOR PRESIDENT!!!!

    • Morris_Hanson
    • vor 5 Jahren
    • Gemeldet - anzeigen

    noch ein kleines problem hat sich gerade ergeben als ich versucht habe einen case einzubauen, in dem der im dialog gewählte datensatz geöffnet werden sollte... 

    case "ÖFFNEN":
    (
    popupRecord(record(Dokumentation,myFlag));
    myFlag := myCNT
    )

    der Datensatz der sich öffnet ist ein komplett anderer :)

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Rene,

    ist ja logisch, myFlag ist keine ID. Es sollte in etwa so aussehen:

    ---

    popupRecord(first(select Dokumentation [

    ("Dokumentation: " + Dokumentation + "

    Datum: " + Datum + "

    KG: " + KG)=item(myArr, myFlag)]))

    ---

    Leo

    • Morris_Hanson
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Ok aber was mache ich wenn myArr so aussieht?

     

    let myArr := Verordnung.Behandlungen.(raw(html("<font size=4><b>" + Name + "</font></b><i> (Aktuell absolvierte Therapien: " + cnt(Verordnung.Behandlungen) + ")</i><br>")) + raw(html("<font size = 4><b>Behandlung: " + 'Behandlungs Nr' + "/" + Verordnung.Anzahl + "</font> - Verordnung Nummer: " + Verordnung.'Vo Nummer' + "<br>" + "<font size=3>Datum: " + text(Termin) + "</font> " + text(format(Behandlungstermin, "HH:mm")) + "</b>")) + if 'Veränderung' != null then
    raw(html("<font size=2><b> - Veränderung: " + 'Veränderung' + "</b><br>"))
    end + if 'neues Problem deponieren' = true then
    raw(html("<br><b>Neues Problem: </b><br><font size=1>" + 'neues Problem?' + "</font>"))
    end + if Krankengeschichte != null then
    raw(html("<br><b>Krankengeschichte: </b><br><font size=1>" + Krankengeschichte + "</font>"))
    end + if 'Befund -> Wiederbefund' != null then
    raw(html("<br><b>Befund/Wiederbefund: </b><br><font size=1>" + 'Befund -> Wiederbefund' + "</font>"))
    else
    raw(html("<br>"))
    end + if Dokumentation != null then
    raw(html("<br><b>Dokumentation: </b><br><font size=1>" + Dokumentation + "</font>"))
    else
    raw(html("<br>"))
    end + if 'Procedere/Empfehlung' != null then
    raw(html("<br><b>Dokumentation: </b><br><font size=1>" + 'Procedere/Empfehlung' + "</font>"))
    else
    raw(html("<br>"))
    end);

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Und warum machst du das? dialog() unterstützt sowieso keine html-Texte?

    • Morris_Hanson
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Doch Leo! Das geht...Dialog_001

    • Morris_Hanson
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Ok ich glaub ich habs. ich musste diesen Dialog inkl. Formatierung als Filter im PopupRecord anlegen... Werds mal testen! LG

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Das ist ja großartig, bin immer davon ausgegangen, dass es im Dialog nur mit Texten geht. Wieder was gelernt.

    Ich habe noch eine Idee. Schreib vor let myArr noch ein Befehl :

    let myIDArr:=Verordnung.Behandlungen.(Nr)

    so werden di IDs in gleichen Reienfolge wi die Texte in myArr zugeordnet. Dann kannst du bei switch so schreiben:

    ---

    case "ÖFFNEN":
    (
    popupRecord(record(Dokumentation,number(item(myIDArr,myFlag))));
    myFlag := myCNT
    )

    ---

     

    Leo