0

Problem mit automatischer Korrektur

Hallo,

ich habe ein Problem mit einem Button.

ich möchte gerne, dass mehrere Datensätze, nach dem Klick auf den Button, bearbeitet werden. Dazu gibt es zwei Optionen:

1. Die Datenänderung wird auf einen Standort angewendet und hier auf alle Bienenvölker

2. Die Datenänderung wird auf mehrere Völker angewendet, deren Beutenummer über ein Array eingegeben wird.

Zunächst habe ich Otpion  1 eingepflegt diee funktioniert auch gut. Pflege ich jetzt eine if Verzweigung zum Unterscheiden zwischen Option 1 und 2 ein habe ich folgendes Problem:

Script wie ich es erstellt habe, es wird von NX kein Fehler angezeigt:

let neuesDatum := 'Datum Behandlung';
let neueArt := 'Art Behandlung';
let Stand := Standort;
let ABeutennummern := [Beutenummern];
if Standort = null or 'Datum Behandlung' = null or 'Art Behandlung' = null then
 alert("Es wurden nicht alle Parameter angegeben")
else
 if 'Anwenden auf' = 1 then
  Standort := 0;
  'Datum Behandlung' := null;
  'Art Behandlung' := null;
  for V in select Volk do
   if last(V.Ertrag.Wanderung) = Stand then
    let neueBehandlung := (create Behandlung);
    neueBehandlung.(Datum := neuesDatum);
    neueBehandlung.(Art := neueArt);
    neueBehandlung.(Volk := V)
   end
  end
 else
  Standort := 0;
  'Datum Behandlung' := null;
  'Art Behandlung' := null;
  for A in ABeutennummern do
   let SVolk := first(select Volk where 'Nr. Beute' = A);
   let neueBehandlung := (create Behandlung);
   neueBehandlung.(Datum := neuesDatum);
   neueBehandlung.(Art := neueArt);
   neueBehandlung.(Volk := SVolk)
  end
 end
end

Nachdem ich nun OK betätige um die Funktion zu testen, verändert mir die automatische Korrektur den Code. Die Funktion ist nicht mehr ausführbar da durch die Korrketur ein Fehler eingebaut wurde. Verändert wird hierbei nur der else Teil der zweiten if Verzweigung, ich habe die von Ninox durchgeführten Änderungen unterstrichen.

let neuesDatum := 'Datum Behandlung';
let neueArt := 'Art Behandlung';
let Stand := Standort;
let ABeutennummern := [Beutenummern];
if Standort = null or 'Datum Behandlung' = null or 'Art Behandlung' = null then
 alert("Es wurden nicht alle Parameter angegeben")
else
 if 'Anwenden auf' = 1 then
  Standort := 0;
  'Datum Behandlung' := null;
  'Art Behandlung' := null;
  for V in select Volk do
   if last(V.Ertrag.Wanderung) = Stand then
    let neueBehandlung := (create Behandlung);
    neueBehandlung.(Datum := neuesDatum);
    neueBehandlung.(Art := neueArt);
    neueBehandlung.(Volk := V)
   end
  end
 else
  Standort := 0;
  'Datum Behandlung' := null;
  'Art Behandlung' := null;
  for A in ABeutennummern do
   let SVolk := first(select Volk where A = A);
   let neueBehandlung := (create Behandlung);
   neueBehandlung.(A := neuesDatum);
   neueBehandlung.(Art := neueArt);
   neueBehandlung.(Volk := SVolk)
  end
 end
end

Ist das ein Fehler in Ninox oder mache ich den? Ich arbeite gerade mit WebVersion.

2 Antworten

null
    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Michael,

    ohne jetzt den Kode zu studieren :

    let ABeutennummern := [Beutenummern] ist falsch. Wenn Beutenummern ein Textfeld ist, wo die Nummern durch Komma getrennt sind ("12,13,14,15"), dann wäre die Formel

    ---

    let ABeutennummern := split(Beutenummern,",")

    ---

    Dann hättest du einen Array mit Texten ["12","13","14","15"]. Wenn bei der Weiterverarbeitung die Beutenummern als Zahlen behandelt werden, dann musst du in der Schleife auch number(...) verwenden.
    Weitere Empfehlung - nimm bitte keine Großbuchstaben für Variablen in der Schleife - diese sind für Feldnamen reserviert und Ninox kommt damit nicht klar. Am liebsten kleine Buchstaben aus der zweite Hälfte des Alphabets (i,j,k...) oder sogar doppelte Kombinationen (ii,jj,kk...).

     

    Leo

    • Michael_Hansen
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

    vielen Dank für die Hilfe. Es hat alles funktioniert.

     

    Gruß

    Micha