0

Dialogfeld, wie macht man einen Abbruch?

Hallo, eine Schaltfläche soll nach dem Duplizieren eines Datensatzes durch den Nutzer betätigt werden. Mit der Schaltfläche werden mehrere Felder im nun duplizierten Datensatz gelöscht, um für die Neuanlage eines Auftrages vorbereitet zu werden. 

Die Schaltfläche soll nicht betätigt werden, wenn der Datensatz nicht vorher dupliziert wurde. Daher habe ich ein Dialogfeld formuliert, das sofort nach dem Drücken der Schaltfläche erscheint: dialog("Achtung! Wurde der Artikel dupliziert?", "Falls nicht, brechen Sie den Vorgang ab! Sonst gehen Daten verloren", ["Weiter", "Abbruch"])

Der Dialog funktioniert, und wenn ich dann auf "Weiter" drücke, läuft der gesamte Vorgang ab. Wie aber erreiche ich, das der Vorgang abgebrochen wird? Das bekomme ich leider nicht hin...

Zur Orientierung gebe ich hier den gesamten Code wieder, der auf der Schaltfläche liegt:

dialog("Achtung! Wurde der Artikel dupliziert?", "Falls nicht, brechen Sie den Vorgang ab! Sonst gehen Daten verloren", ["Weiter", "Abbruch"]) + ('Auflagehöhe' := "null") + (Auftragseingang := today()) + (Versandtermin := "null") + ('Bestell-Nr.' := "Eintragen!") + ('AB Nr.' := "53--19") + (Stufe := 1) + (Aktuell := true) + ('Mat C' := 4) + (Aktion := 2 + ('Film prüfen' := 2)) + ('Mat A' := 4 + ('Mat B' := 4)) + (Farben := 4) + (Wunschtermin := "null") + ('Notiz Farbbestand' := "null" + ('Auftragsbestätigung?' := false)) + (
let myAnswer := dialog("Prüfbericht gefordert?", " ", ["Ja", "Nein"]);
if myAnswer = "Ja" then
'Prüfbericht gefordert' := true
else
'Prüfbericht gefordert' := false
end
)

 

Für Eure Hilfe wäre ich sehr dankbar!

Heino

9 Antworten

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

    'n Abend Ich verstehe den Teil mit den ganzen Plus-Zeichen nicht. Aber davon mal abgesehen: Wenn du die Ausführung bestimmter Funktionen von der Beantwortung einer Frage im dialog()-Fenster abhängig machen willst, geht das genauso wie bei der Prüfbericht-Abfrage in den letzten Zeilen ab "let myAnswer ..." (siehe anderer Thread).

    Nochmal: Die dialog()-Funktion an sich macht nichts anderes, als die Ausführung des Codes anzuhalten, bis einer der Buttons gedrückt wurde. Der Wert dieses Buttons lässt sich in eine Variable schreiben (let myAnswer := dialog(...)). Diese Variable wiederum kann man wie jede andere abfragen, z. B. mit "if" (if myAnswer = "Ja" then ...). Und innerhalb einer if-then-else-end-Konstruktion lässt sich beliebiger Code unterbringen, bei Bedarf u. a. auch ein weiterer Dialog. Beispiel:

    let AntwortA := dialog("TitelA", "MeldungA", ["Weiter", "Abbrechen" ...]);
    if AntwortA = "Weiter" then
        Codezeile1;

        Codezeile2;

        Codezeile3;

        ... usw.;

        let myAnswer := dialog("Prüfbericht gefordert?", " ", ["Ja", "Nein"]);

        if myAnswer = "Ja" then
            'Prüfbericht gefordert' := true
        else
            'Prüfbericht gefordert' := false
        end;
        Codezeile4;

        ... usw.;

    else
        alert("Vorgang abgebrochen!")

    end

    Der gesamte Code, der natürlich auch deutlich umfangreicher sein kann, würde nur beim Klicken auf "Weiter" ausgeführt. Bei "Abbrechen" würde in diesem Fall nur die Meldung "Vorgang abgebrochen!" angezeigt.

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

    PS: Um die Frage "Wie macht man einen Abbruch?" konkret zu beantworten: Gar nicht. Man geht umgekehrt vor und lässt den betreffenden Code nur unter bestimmten Bedingungen ausführen.

    • Heino
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Guten Abend Copytexter, danke für Deine Hilfe. Mit Ninox arbeite ich schon eine ganze Weile und meine Anwendung ist mit der Zeit gewachsen. Nun kann ich leider nicht programmieren, was sich wohl im Aufbau meiner Datenbank als auch in der mangelnden Präzision meiner Fragestellung zeigen mag. Ich brauche etwas länger, um die von Dir angesprochene Lösung zu verstehen; auch bin ich  - noch - nicht in der Lage, den Lösungsweg, den Du mir freundlicherweise im vorigen Thread gegeben hast, an neue Fragestellungen anzupassen. 

    Danke  für Deine Geduld und Hilfe!

     

    Viele Grüße

    Heino

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

    Kein Problem, dafür gibt's ja dieses Forum. Am Anfang des Weges liegen immer ein paar Stolpersteine, aber die Erstellung von Scripten mit Ninox ist tatsächlich relativ einfach. Vorkenntnisse der Programmierung (im engeren Sinne) braucht man dazu nicht. Es kann aber natürlich helfen, sich die grundlegenden Erläuterungen im Handbuch oder die fertigen Datenbank-Vorlagen von Ninox anzusehen. Gerade durch letztere versteht man zumindest die Basics eigentlich recht schnell. Und für alles weitere gibt es wie gesagt dieses Forum, da muss niemand irgendwelche Hemmungen haben. Wohl meine ersten hundert Beiträge hier waren ausschließlich Fragen (ja: auch ziemlich "dumme"). Antworten kamen erst später. ;)

    https://ninoxdb.de/de/manual/berechnung/berechnungen-und-formeln

    • Heino
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Danke für Deine Worte und ganz besonders auch für Deine Hilfe; ich habe das Script eben in meine Anwendung eingefügt und es funktioniert wie erhofft! 

    • Heino
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Ach so: jetzt übrigens ohne die Plus-Zeichen; wusste nicht, das es auch anders geht. Da habe ich doch etwas gelernt! Freue mich...

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

    Ja, das mit den Plus-Zeichen hat mich doch sehr irritiert. Habe ich schon mehrfach gesehen, weiß gar nicht, wo das herkommt. Vielleicht von Excel, wo man alles als Formel in eine Zeile quetscht.

     

    Wie auch immer: Bei Ninox (und anderen Script- bzw. Programmiersprachen) dient das Plus-Zeichen als mathematischer  Operator (3 + 5 = 8) und der Verkettung von Texten bzw. Zeichenfolgen ("Max" + " " + "Mustermann" = "Max Mustermann"). Befehle oder Funktionen lassen sich auf diese Weise nicht verbinden.

    • Heino
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Diese Schreibweise ergibt sich, wenn man für die Scripterstellung den visuellen Formeleditor in Ninox nutzt. Für Fortgeschrittene  sicher entbehrlich, aber mir hat es den Einstieg in Ninox sehr erleichtert. Der Leistungsumfang ist begrenzt, aber man kommt erstaunlich weit damit. 

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

    Ach so, der visuelle Editor - okay. Den habe ich nie genutzt. Text fand ich immer deutlich übersichtlicher. Die kognitiven Fähigkeiten von Menschen sind halt sehr unterschiedlich. Von daher ist es sicher gut, dass es die visuelle Variante gibt.

Content aside

  • vor 4 JahrenZuletzt aktiv
  • 9Antworten
  • 2110Ansichten