0

Einzelnen Buchstaben einer Projektnummer mittels Trigger und "replace" ändern?

Hallo liebe Ninox-Freunde,

ich habe folgendes Problem, vielleicht weiß jemand auf Anhieb bescheid woran es liegen mag.

Und zwar habe ich eine Liste mit Projekten, die von 2 verschiedenen Firmen (K oder W) ausgeführt werden. Die Projektnummer wird wie folgt per "Trigger bei neuem Datensatz" erzeugt:

let Prefix := "K";
let myYear := year(today());
let myPN := max((select Projekte where year(CreatedAt) = myYear).substr(Projektnummer, 8));
Projektnummer := Prefix + "-" + myYear + "-" + format(number(myPN) + 1, "0000");
CreatedAt := today()

Soweit so gut, das funktioniert auch und das Ergebnis sieht so aus: K-2023-0001.

Nun möchte ich, dass sich das "K" in der Projektnummer zu "W" ändert, sobald ich per Radiobutton die Firma "W" auswähle. Somit habe ich folgenden Trigger erstellt:

if Firma = "Walross" then
    replace(Projektnummer, "K", "W")
else
    if Firma = "Klabautermann" then
        replace(Projektnummer, "W", "K")
    end
end

Dies funktioniert jedoch nicht, wie ich es mir vorstelle. Wäre ja auch zu einfach 😅.

Hat jemand einen Tipp für mich, weshalb sich der erste Buchstabe nicht von K zu W ändert, sobald ich die Radiobuttons nutze?

Vielen Dank für eure Zeit! :-)
LG

8 Antworten

null
    • UweG
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Und wo soll das Ergebnis des Replace landen bei deinem Script?
    Teste mal.
    if Firma = "Walross" then
        Projektnummer := replace(Projektnummer, "K", "W")
    else
        if Firma = "Klabautermann" then
            Projektnummer := replace(Projektnummer, "W", "K")
        end
    end

      • NinoxNewbie
      • schmitz86
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Hallo

      vielen Dank für deine schnelle Rückmeldung und Hilfe! :)

      Ah, ich sprach die Spalte Projektnummer nicht an, oder?

      Leider funktioniert dein Script auch noch nicht, wirft aber auch keinen Fehler aus.

      • Ninox-Professional
      • planoxpro
      • vor 1 Jahr
      • Gemeldet - anzeigen

      KSmith 

      Der Vollständigkeit halber (es lesen ja auch andere mit): Der erste Vorschlag von UweG hat nur deshalb nicht funktioniert, weil es sich bei 'Firma' um ein Auswahlfeld handelt (was zu dem Zeitpunkt noch nicht bekannt war). Auswahlfelder geben standardmäßig die Nummer des ausgewählten Eintrags als Zahl zurück (siehe Vorschlagtrut hein . Will man statt dessen den Textwert abfragen, muss man das mit der entsprechenden Funktion ausdrücklich angeben. In diesem Fall hätte es also heißen müssen:

      if text(Firma) = "Walross" then ...

      Dann hätte es auch funktioniert. ;)

      Es ist also immer wichtig, auch den Typ des Feldes anzugeben, das abgefragt werden soll.

      • NinoxNewbie
      • schmitz86
      • vor 1 Jahr
      • Gemeldet - anzeigen

       Achsoooo! Und wieder was gelernt, danke dir! 😀

    • truthein
    • vor 1 Jahr
    • Gemeldet - anzeigen
    KSmith said:
    Somit habe ich folgenden Trigger erstellt:

    if Firma = "Walross" then

     Hängt dein auch Trigger am Auswahlfeld «Firma» bei "Trigger nach Änderung" (wo er hingehört)?
    Falls ja und das nicht funktioniert dann probier mal:

     

    if Firma = 1 then
        Projektnummer := replace(Projektnummer, "W", "K")
    else
        if Firma = 2 then
            Projektnummer := replace(Projektnummer, "K", "W")
        end
    end
      • NinoxNewbie
      • schmitz86
      • vor 1 Jahr
      • Gemeldet - anzeigen

       Ja da hing er! Und mit deinem Vorschlag läuft es brillant!

      Vielen, vielen Dank! 🙏

      • truthein
      • vor 1 Jahr
      • Gemeldet - anzeigen

      KSmith Schön, danke für deinen Dank!
      Mir kommt noch in den Sinn: die Logik funktioniert ja aber nur, wenn du sicher sein kannst, dass du immer mit genau den beiden Firmen "K" und "W" zu tun haben wirst ... du kannst also nun n nicht nachträglich einfach einen dritten Buchstaben in das Auswahlfeld aufnehmen.

      Falls das sein könnte, dann ist vielleicht das eine Idee für diesen Trigger
       

      Projektnummer := substr(text(Firma), 0, 1) + substr(Projektnummer, 1)
      • NinoxNewbie
      • schmitz86
      • vor 1 Jahr
      • Gemeldet - anzeigen

       Danke dir, ja genau, das ist kein Problem, es werden ausschließlich diese beiden Firmen benötigt :-)