0

switch-case hilfe

if dialog("Eingabe überprüfen", html(Dialog2), ["Auftrag erstellen", "ABBRECHEN"]) = "Auftrag erstellen" then
        let KvNrEintrag := 'KV-Nr_von_Dialog_(Text)';
        let NummerRecord := 'Record-Nr_Dialog_Aufträge_(Zahl)';
        switch true do
        case NummerRecord = 0 and KvNrEintrag = "yes":
            (
                let nummerVertragspartner := number('Record-Nr_Dialog_Vertragspartner_(Zahl)');
                let NameKunde := 'Name_von_Dialog_(Text)';
                let KvNummerNeu := 'KV-Nr_von_Dialog_(Text)';
                if cnt((select 'Aufträge')['KV-Nr.' = KvNummerNeu and Vertragspartner.number(Nr) = nummerVertragspartner]) > 1 then
                    alert("nicht möglich, Auftrag schon vorhanden")
                else
                    let myR := (create 'Aufträge');
                    myR.(
                        Vertragspartner := nummerVertragspartner;
                        'KV-Nr.' := KvNummerNeu;
                        Name := NameKunde
                    );
                    popupRecord(myR)
                end
            )
        case NummerRecord = 0 and KvNrEintrag = "no":
            (
                let nummerVertragspartner := number('Record-Nr_Dialog_Vertragspartner_(Zahl)');
                let NameKunde := 'Name_von_Dialog_(Text)';
                let KvNummerNeu := 'KV-Nr_von_Dialog_(Text)';
                let myR := (create 'Aufträge');
                myR.(
                    Vertragspartner := nummerVertragspartner;
                    'KV-Nr.' := KvNummerNeu;
                    Name := NameKunde
                );
                popupRecord(myR)
            )
        case NummerRecord > 0:
            (
                let nummerAuftraege := 'Record-Nr_Dialog_Aufträge_(Zahl)';
                let nidOeffnen := first(select 'Aufträge' where number(Nr) = nummerAuftraege);
                popupRecord(nidOeffnen)
            )
        case NummerRecord = null:
            alert("eingaben unvollständig, bitte wiederholen")
        default:
            alert("fehler im script")
        end
    end
end

Ich bekomme es einfach nicht zum Laufen. Der case 1 mit if else will immer nicht.

Der 1. case will einfach nicht.

  • case 1 : ist nummerRecord = 0 and KvNrEintrag="true"

Dann soll geprüft werden ob eine KV-Nr schon besteht, wenn ja: der alert, wenn nein: neun record anlegen

  • case 2: ist nummerRecord = 0 and KvNrEintrag="false"

Dann soll eine neuer record angelegt werden

  • case 3: ist nummerRecord > 0

vorhandenen record öffnen

  • case 4: ist nummerRecord = null

alert

6 Antworten

null
    • Michi.1
    • vor 9 Monaten
    • Gemeldet - anzeigen

    könnt verrückt werden... nichts will den ersten zweig machen 😡😡😡

    if 'Record-Nr_Dialog_Aufträge_(Zahl)' = 0 and 'KV-Nr_von_Dialog_(Text)' then
        let nummerVertragspartner := number('Record-Nr_Dialog_Vertragspartner_(Zahl)');
        let NameKunde := 'Name_von_Dialog_(Text)';
        let KvNummerNeu := 'KV-Nr_von_Dialog_(Text)';
        if cnt((select 'Aufträge')['KV-Nr.' = KvNummerNeu and Vertragspartner.number(Nr) = nummerVertragspartner]) > 1 then
            alert("nicht möglich, Auftrag schon vorhanden")
        else
            let nummerVertragspartner := number('Record-Nr_Dialog_Vertragspartner_(Zahl)');
            let NameKunde := 'Name_von_Dialog_(Text)';
            let KvNummerNeu := 'KV-Nr_von_Dialog_(Text)';
            let myR := (create 'Aufträge');
            myR.(
                Vertragspartner := nummerVertragspartner;
                'KV-Nr.' := KvNummerNeu;
                Name := NameKunde
            );
            popupRecord(myR)
        end
    else
        if 'Record-Nr_Dialog_Aufträge_(Zahl)' = 0 and 'KV-Nr_von_Dialog_(Text)' = null then
            let nummerVertragspartner := number('Record-Nr_Dialog_Vertragspartner_(Zahl)');
            let NameKunde := 'Name_von_Dialog_(Text)';
            let KvNummerNeu := 'KV-Nr_von_Dialog_(Text)';
            let myR := (create 'Aufträge');
            myR.(
                Vertragspartner := nummerVertragspartner;
                'KV-Nr.' := KvNummerNeu;
                Name := NameKunde
            );
            popupRecord(myR)
        else
            if 'Record-Nr_Dialog_Aufträge_(Zahl)' > 0 and 'KV-Nr_von_Dialog_(Text)' then
                let nummerAuftraege := 'Record-Nr_Dialog_Aufträge_(Zahl)';
                let nidOeffnen := first(select 'Aufträge' where number(Nr) = nummerAuftraege);
                popupRecord(nidOeffnen)
            else
                if 'Record-Nr_Dialog_Aufträge_(Zahl)' = null and 'KV-Nr_von_Dialog_(Text)' = null then
                    alert("eingaben unvollständig, bitte wiederholen")
                end
            end
        end
    end
    • Michi.1
    • vor 9 Monaten
    • Gemeldet - anzeigen

    Es wird immer ein neuer erstellt selbst wenn die bedinungen für das alert erfüllt sind.

    if 'Record-Nr_Dialog_Aufträge_(Zahl)' = 0 and 'KV-Nr_von_Dialog_(Text)' then let nummerVertragspartner := number('Record-Nr_Dialog_Vertragspartner_(Zahl)'); let NameKunde := 'Name_von_Dialog_(Text)'; let KvNummerNeu := 'KV-Nr_von_Dialog_(Text)'; if cnt((select 'Aufträge')['KV-Nr.' = KvNummerNeu and Vertragspartner.number(Nr) = nummerVertragspartner]) > 1 then alert("nicht möglich, Auftrag schon vorhanden") else let nummerVertragspartner := number('Record-Nr_Dialog_Vertragspartner_(Zahl)'); let NameKunde := 'Name_von_Dialog_(Text)'; let KvNummerNeu := 'KV-Nr_von_Dialog_(Text)'; let myR := (create 'Aufträge'); myR.( Vertragspartner := nummerVertragspartner; 'KV-Nr.' := KvNummerNeu; Name := NameKunde ); popupRecord(myR) end

    Ich verstehe nicht warum? Kv-Nr für den Vertragspartner ist vorhanden also größer 1 als Ergebniss. Dennoch wird nicht der alert ausgelöst,  sondern der Datensatz angelegt. 

    • Michi.1
    • vor 9 Monaten
    • Gemeldet - anzeigen

    Beim Schreiben den Fehler bemerkt >= .... der Fehler sitzt immer vor dem Bildschirm 

    • Tobias_Bartzsch
    • vor 9 Monaten
    • Gemeldet - anzeigen

    ...manchmal hilft es, einfach mal drüber zu reden :)) 
    Schön, dass es dann doch noch läuft. Immer ein gutes Gefühl bei Ninox-Projekten.

      • Torsten_Stang.1
      • vor 9 Monaten
      • Gemeldet - anzeigen

       der klassische Ablauf, wer kennt ihn nicht?:

      - sich an einer Problematik stunden- oder tagelang die Zähne ausbeissen

      - irgendwann verzweifelt einen Forenpost dazu absetzen

      - maximal fünf Minuten später selbst auf die Lösung kommen... 😄

    • Michi.1
    • vor 9 Monaten
    • Gemeldet - anzeigen

    Könnte man schon kotzen, wenn die erste Variante die richtige war, man den Fehler nicht bemerkt und am Ende viel Zeit damit verbracht hat.