0

Änderungstrigger reagiert nicht auf Auswahlfeld ???

Hab die Suche bemüht, aber nix gefunden:

Ich habe ein Auswahlfeld mit 4 Optionen. Je Option soll bei Klick eine andere Aktion auslösen. Jetzt stelle ich allerdings fest, dass diese Änderung des Auswahlfeldes weder auf Ebene des Feldes, noch auf Ebene des Datensatzes durch den Änderungstrigger wahrgenommen genommen wird. Sprich, das beispielhafte Skript 

if Aktion = 1 then drucken(); end;

if Aktion = 2 then senden(); end;

if Aktion = 3 then bearbeiten(); end;

wird einfach nicht ausgeführt. Packe ich die 4 Skripte aber in einen Button, dann gehts.

Das verstehe ich nicht. Wenn sich der Wert des Auswahlfeldes (1; 2; 3; 4) von Null auf X ändert, sollten die Trigger doch reagieren.

Weiß jemand, was da nicht stimmt? Danke

10 Antworten

null
    • Tomi.1
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Wenn ich das Problem richtig verstanden habe dann sollte das eigentlich gehen.

    Lies doch sicherheitshalber den Wert des Auswahlfeldes mit einer Funktion aus.
    Dann bist du sicher welcher Wert ausgewählt wurden.

    Bei mir funktioniert das auf jeden Fall auf beiden Ebenen (Feld und Tabelle)

    Allerdings finde ich es einfacher und übersichtlicher wenn man das mit den "Case" Befehlt macht wenn es mehr als zwei mögliche Auswahlwerte gibt:

    case 1:
    (
    Dicke := 3;
    'Preis pro m²' := 14.35
    )
    case 2:
    (
    Dicke := 4;
    'Preis pro m²' := 15.7
    )
    case 3:
    (
    Dicke := 6;
    'Preis pro m²' := 17.1
    )
    end

    Anmerkung:
    Wenn du nur eine Befehlszeile pro kannst du die Klammern weg lassen.

    Was meines Wissens nicht geht, ist das Öffnen von anderen Tabellen über ein Auswahlfeld.
    Das geht wirklich nur über ein Schalter.
    (Leider)

    • Icarus_Ralf_Becker
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Das dachte ich auch. Vielleicht habe ich ja auch einen Denkfehler. Hier die Settings von dem Auswahlfeld:

    Bildschirmfoto 2020-01-25 um 17.35.54

    Sowohl im Änderungstrigger des Feldes, als auch des Datensatzes steht folgendes Skript:

    switch Aktion do
    case 1:
    (
    "
    / Drucken /";
    let layout := null;
    if 'Sprünge' != null and 'zus. Gutschriftspositionen' = null then
    layout := "1"
    end;
    if 'Sprünge' = null and 'zus. Gutschriftspositionen' != null then
    layout := "2"
    end;
    if 'Sprünge' != null and 'zus. Gutschriftspositionen' != null then
    layout := "3"
    end;
    printRecord(this, layout);
    gedruckt := 2
    )
    case 2:
    (
    "
    / Mail versenden /";
    send_custom_mail(KundenID, number(this), 2)
    )
    case 3:
    (
    "
    / Rechnung nachträglich bearbeiten /";
    if 'bezahlt am' = null then
    edit := true
    else
    alert("Die Gutschrift ist bereits als bezahlt markiert und kann daher nicht mehr geändert werden.")
    end
    )
    end

    Klickt man auf eine der Auswahloptionen, passiert gar nichts

    • Support
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Es muss heißen:
    –––
    switch number(Aktion) do
    [...]
    –––

    Birger

    • Icarus_Ralf_Becker
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Birger,

    vielen Dank für den Hinweis. Ich habe das geändert, aber funktionieren tut es trotzdem nicht.

    VG Ralf

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

    Moin, die Feldabfrage müsste eigentlich auch ohne number() funktionieren, aber wie Tomi schon richtig gesagt hat, gibt es Funktionen, die nur in Schaltflächen nutzbar sind, nicht in Triggern. Dazu gehören meines Wissens auch auch alert() und printRecord().

    • Tomi.1
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Also, bei mir funktioniert die Feldabfrage auch ohne number().

    switch Material do
    case 1:
    (
    Dicke := 3;
    'Preis pro m²' := 14.35
    )
    case 2:
    (
    Dicke := 4;
    'Preis pro m²' := 15.7
    )
    case 3:
    ........

    Da es bei mir und bei allen Anderen funktioniert muss die reine Abfrage ja richtig sein.
    Es kann also nur an dem liegen was nach der Abfrage passiert.
    Folglich hat der Copytexter Recht und es liegt an den alert() und printRecord() Funktionen.

    Was sagen denn die Gurus von Ninox dazu?

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

    Wobei es mir persönlich ohnehin zu heikel wäre, über ein Auswahlfeld komplexe Vorgänge zu starten. Erst recht, wenn vielleicht mehrere Personen damit arbeiten, die nicht damit rechnen, dass bei Änderung der Auswahl etwas derartiges passiert.

     

    Gut, das ist natürlich Geschmacksache, aber was spricht dagegen, statt des Auswahlfeldes drei Buttons namens "Drucken", "Mailen" und "Bearbeiten" zu erstellen? Dann könnte man ggf. auch noch weitere Abfragen einbauen, etwa per dialog(), das auch nur in Schaltflächen funktioniert.

    • Support
    • vor 4 Jahren
    • Gemeldet - anzeigen

    'Material' ist ein Auswahlfeld.
    –––
    switch number(Material) do
    case 1:
    ( [...]
    –––
    ...ist auf jedem Fall richtig und zu bevorzugen.

    Birger

    • Tomi.1
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hi Birger,
    das hatte ich auch so schon verstanden.

    Es wäre aber mal hilfreich zu wissen welche Funktione/Befehle von davon ausgenommen sind im Auswahlfeld genutzt zu werden.

    Ich will jetzt da keine Beispiele nennen um das Ganze nicht vorzuwerten.

    So nach dem Motto:

    Es geht nicht:

    a.)
    b.)
    c.)

    etc.

    Ob das jeweils Sinn macht hängt diese Befehle über ein Auswahlfeld anzuwenden hängt ja vom Betrachter/Programmierer/Nutzer ab aber es wäre mal gut zu wissen was geht oder besser was nicht geht.

    • Tomi.1
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Ich wollte schreiben:
    Ob das jeweils Sinn macht diese Befehle über ein Auswahlfeld anzuwenden hängt ja auch vom Betrachter/Programmierer/Nutzer ab.
    Es wäre aber mal gut zu wissen was geht oder besser was nicht geht.