0

Dialog Auswahl

Hilfe,

wie kann ich denn im Dialog die Namen Anzeigen lassen, aber im ergebniss mit der Datensatz Nr weiter arbeiten?

a0 bis a3 soll im Dialog eigentlich als Name angezeigt werden, sofern es einen treffer gibt. Für die weiterverarbeitung benötige ich aber die Datensatz Nr.

let KV := (select 'Aufträge' where bezug = user()).text(Nr);
let a0 := item(KV, 0);
let a1 := item(KV, 1);
let a2 := item(KV, 2);
let a3 := item(KV, 3);
let tex := "Warenbuchung" + "
" + "
" + Artikelbezeichnung + "
" + "
" + "Menge:  " + Menge;
let dia := dialog("Auftrag für Buchung wählen", tex, [a0, a1, a2, a3, "Abbrechen"]);
let erg := if dia = a0 then
        first(select 'Aufträge' where Nr = number(a0))
    else
        if dia = a1 then
            first(select 'Aufträge' where Nr = number(a1))
        else
            if dia = a2 then
                first(select 'Aufträge' where Nr = number(a2))
            else
                if dia = a3 then
                    first(select 'Aufträge' where Nr = number(a3))
                end
            end
        end
    end;
Text := text(erg)

5 Antworten

null
    • Michi.1
    • vor 2 Jahren
    • Gemeldet - anzeigen

    jetzt bleibt noch die felder ohne ergebniss "#3" + "#4" im besten fall auszublenden oder mit einem "-" zu versehen.

    let KV := (select 'Aufträge' where bezug = user()).Name;
    let a0 := item(KV, 0);
    let a1 := item(KV, 1);
    let a2 := item(KV, 2);
    let a3 := item(KV, 3);
    let KV1 := (select 'Aufträge' where bezug = user()).Nr;
    let a00 := item(KV1, 0);
    let a11 := item(KV1, 1);
    let a22 := item(KV1, 2);
    let a33 := item(KV1, 3);
    let tex := "Warenbuchung" + "
    " + "
    " + Artikelbezeichnung + "
    " + "
    " + "Menge:  " + Menge;
    let dia := dialog("Auftrag für Buchung wählen", tex, [a0, a1, a2, a3, "Abbrechen"]);
    let erg := if dia = a0 then
            first(select 'Aufträge' where Nr = number(a00))
        else
            if dia = a1 then
                first(select 'Aufträge' where Nr = number(a11))
            else
                if dia = a2 then
                    first(select 'Aufträge' where Nr = number(a22))
                else
                    if dia = a3 then
                        first(select 'Aufträge' where Nr = number(a33))
                    end
                end
            end
        end;
    Text := number(erg)
    
    • Ninox-Professional
    • planoxpro
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Michi, ich weiß zwar nicht, warum du die Nummer des gewählten Datensatzes am Ende in ein Feld namens 'Text' schreibst, würde generell den Code aber reduzieren und es so versuchen:

    let myDA := for i in select 'Aufträge' where Bezug = user() do i.Name end;
    myDA := array(myDA, ["Abbrechen"]);
    let myChoice := dialog("Titel", "Text", myDA);
    let myText := first(select 'Aufträge' where Name = myChoice).number(Nr);
    Text := myText

    Wobei die dialog()-Funktion natürlich sowieso ihre Grenzen hinsichtlich der Darstellung der Schaltflächen hat. Das Dialog-Fenster wächst leider nicht mit Anzahl/Breite der Buttons.

      • Michi.1
      • vor 2 Jahren
      • Gemeldet - anzeigen

      planox. pro  perfekt und so schön kurz. Danke 👍

      Das mit dem "Text feld war nur zum testen.

      • Michi.1
      • vor 2 Jahren
      • Gemeldet - anzeigen

      planox. pro doch zu früh gefreut, Da es ja Müller 5 mal geben kann muss bei click auf Müller im Dialog dringend mit der Nr aus 

      (select 'Aufträge' where bezug = user()).Nr;

      weiter gearbeitet werden. In der so schön kurzen variante ist das leider nicht der fall. gibt es da ne lösung?

    • Michi.1
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Das einzige was mir einfällt ist so ein riesen zweig aufzustellen damit man die max 4 varianten abbilden kann.

    Der bezug = user() wird bei click auf den Kartenreiter erzeugt welcher mich zu den Lagerartikeln führt und bei verlassen wieder auf null gesetzt. So kann ich den Datensatz aus der nicht verknüpften tabelle wo ich mich mit dem skript befinde rausfinden. Den Lagerbestand buche ich dann in Lieferscheine und verknüpfe dies mit dem Auftrag von dem ich kam (bezug =user()). Da ich aber im Büro mit 2 instanzen (PC´s) arbeite und im Lager noch einen PC mit meiner instanz habe, muss ich fehler im vorfeld vermeiden. Denn dann kann es sein das ich 3 mal einem datensatz den bezug zugewiesen habe.

    let aa := Artikelbezeichnung;
    let bb := text(Menge);
    let mm := (create Lieferscheine);
    mm.(Lieferantenauswahl := 26);
    mm.(Menge := number(bb));
    mm.('Lager Artikel' := aa);
    mm.('Aufträge' := erg)

    let an := cnt(select 'Aufträge' where bezug = user());
    if an = 4 then
        let KV := (select 'Aufträge' where bezug = user()).Name;
        let a0 := item(KV, 0);
        let a1 := item(KV, 1);
        let a2 := item(KV, 2);
        let a3 := item(KV, 3);
        let KV1 := (select 'Aufträge' where bezug = user()).Nr;
        let a00 := item(KV1, 0);
        let a11 := item(KV1, 1);
        let a22 := item(KV1, 2);
        let a33 := item(KV1, 3);
        let tex := "Warenbuchung" + "
    " + "
    " + Artikelbezeichnung + "
    " + "
    " + "Menge:  " + Menge;
        let dia := dialog("Auftrag für Buchung wählen", tex, [a0, a1, a2, a3, "Abbrechen"]);
        let erg := if dia = a0 then
                first(select 'Aufträge' where Nr = number(a00))
            else
                if dia = a1 then
                    first(select 'Aufträge' where Nr = number(a11))
                else
                    if dia = a2 then
                        first(select 'Aufträge' where Nr = number(a22))
                    else
                        if dia = a3 then
                            first(select 'Aufträge' where Nr = number(a33))
                        end
                    end
                end
            end;
        Text := number(erg)
    else
        if an = 3 then
            let KV := (select 'Aufträge' where bezug = user()).Name;
            let a0 := item(KV, 0);
            let a1 := item(KV, 1);
            let a2 := item(KV, 2);
            let KV1 := (select 'Aufträge' where bezug = user()).Nr;
            let a00 := item(KV1, 0);
            let a11 := item(KV1, 1);
            let a22 := item(KV1, 2);
            let tex := "Warenbuchung" + "
    " + "
    " + Artikelbezeichnung + "
    " + "
    " + "Menge:  " + Menge;
            let dia := dialog("Auftrag für Buchung wählen", tex, [a0, a1, a2, "Abbrechen"]);
            let erg := if dia = a0 then
                    first(select 'Aufträge' where Nr = number(a00))
                else
                    if dia = a1 then
                        first(select 'Aufträge' where Nr = number(a11))
                    else
                        if dia = a2 then
                            first(select 'Aufträge' where Nr = number(a22))
                        end
                    end
                end;
            Text := number(erg)
        else
            if an = 2 then
                let KV := (select 'Aufträge' where bezug = user()).Name;
                let a0 := item(KV, 0);
                let a1 := item(KV, 1);
                let KV1 := (select 'Aufträge' where bezug = user()).Nr;
                let a00 := item(KV1, 0);
                let a11 := item(KV1, 1);
                let tex := "Warenbuchung" + "
    " + "
    " + Artikelbezeichnung + "
    " + "
    " + "Menge:  " + Menge;
                let dia := dialog("Auftrag für Buchung wählen", tex, [a0, a1, "Abbrechen"]);
                let erg := if dia = a0 then
                        first(select 'Aufträge' where Nr = number(a00))
                    else
                        if dia = a1 then
                            first(select 'Aufträge' where Nr = number(a11))
                        end
                    end;
                Text := number(erg)
            else
                if an = 1 then
                    let KV := (select 'Aufträge' where bezug = user()).Name;
                    let a0 := item(KV, 0);
                    let KV1 := (select 'Aufträge' where bezug = user()).Nr;
                    let a00 := item(KV1, 0);
                    let tex := "Warenbuchung" + "
    " + "
    " + Artikelbezeichnung + "
    " + "
    " + "Menge:  " + Menge;
                    let dia := dialog("Auftrag für Buchung wählen", tex, [a0, "Abbrechen"]);
                    let erg := if dia = a0 then
                            first(select 'Aufträge' where Nr = number(a00))
                        end;
                    Text := number(erg)
                end
            end
        end
    end