0

Cnt

Hallo Zusammen,

mit folgender Formel:

let myAk := this;
cnt(Aktionen[Aktion = 4], Aktionen.Akteure.Name = myAk)

möchte ich Aktionen, bestimmter Personen auszählen. Leide zählt mein Script immer 1 mehr als tatsächlich vorhanden.

Habe jetzt am Ende des Scripts -1 angefügt :-). 
Jemand eine Idee warum das so ist?

 

Gruß

Thomas

18 Antworten

null
    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Thomas,

    cnt(Aktionen[Aktion = 4 and Akteure.Name = myAk])

    Leo

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Ich glaube aber, es ist noch einfacher. kannst du bitte das Datenmodell posten?

    • Thomas_Konradt
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Leo!

    mit deinem script ist das Ergebnis 0

    Gruß

    Thomas

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Wie ich schon sagte, brauche ich das Datenmodell. Was ist die 4? ist das DatensatzID bei der Tabelle Aktionen?

    Wurden die Verknüpfungen umbenannt? Am besten Foto vom Datenmodell und Verknüpfungen. 

    LEo

    • Thomas_Konradt
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

    hier das Datenmodell

    3D62DFFD-6211-4097-9EAA-25816DA5C547

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Sheint eine 1:n Beziehung zu sein. Und Aktion sollte dann ein Auswahlfeld in der Tabelle Aktionen sein. Dann soolte die Formel so sein:

    ---

    cnt(Aktionen[Aktion = 4])

    ---

    Leo

    • Thomas_Konradt
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Danke Leo, das war die Lösung.

    Gruß

    Thomas

    • Thomas_Konradt
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

    darf ich dein Wissen nochmals in Anspruch nehmen?
    Habe das DB Modell leicht modifiziert und komme einfach nicht weiter.

    Ich würde gerne eine Punktprämie, wenn einige Kriterien erfüllt sind, automatisch auslesen lassen.

    Tabelle Spieltage (verknüpft mit Tabelle Punktprämie z.B Saison 2020 / 2021)

    Bedingung: Art Spiel (Auswahlfeld) =1 (Pflichtspiel) und Spielausgang =1 (Sieg) und Tabelle Startelf das Merfachauswahlfeld Einsatz = Startelf dann soll aus der Tabelle Punktprämie die entsprechende Saison (derzeit 2020 / 2021) der Wert aus dem Zahlenfeld "Startelf Sieg" ausgewählt und in das Zahlenfeld in der Tabelle Startelf eingefügt werden.

    dann mit "else" und anderen Parameter weitergehen.

    Hier nochmals das Datenmodell 

     

    Mit einem Hinweis, wie ich am Besten anfangen soll, wäre schon super.

    Ach ja, das Ganze soll wenn möglich als Trigger in der Verknüpfung Saison mit Punktprämie.... nach Änderungen passieren

    Gruß

    Thomas

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Thomas,

    die Tabelle Startelf ist eine Untertabelle zu Spieltage. Das bedeuted, dass es mehrere Datensätze von Startelf in einem Datensatz von Spieltage zu sehen sind. Du schreibst: " Tabelle Startelf das Merfachauswahlfeld Einsatz = Startelf". Welcher Datensatz muss man für einen Vergleich nehmen?

    Leo

    • Thomas_Konradt
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

    in Startelf wähle ich meine Spieler aus, die an diesem Tag im Kader sind (Kader wäre wahrscheinlich auch die bessere Bezeichnung anstatt Startelf) und in Einsatz wird definiert ob Der Spieler in der "Startelf steht (höhere Prämie) oder nur als Ersatzspieler eingesetzt wird.

     

    Gruß 

    Thomas

    • Thomas_Konradt
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

    derzeit mache ich das über ein Berechnungsfeld mit folgendem Kode:

    let mySaison := text(Spieltage.'Punktprämie');
    if Spieltage.Spielausgang = "Sieg" and contains(text(chosen(Einsatz)), "Startelf") and Spieltage.Heim = 1 and Spieltage.'Art Spiel' = 1 then
    50
    else
    if Spieltage.Spielausgang = "Sieg" and contains(text(chosen(Einsatz)), "Ersatzspieler") and Spieltage.Heim = 1 and Spieltage.'Art Spiel' = 1 then
    20
    else
    if Spieltage.Spielausgang = "Unentschieden" and contains(text(chosen(Einsatz)), "Startelf") and Spieltage.Heim = 1 and Spieltage.'Art Spiel' = 1 then
    20
    else
    if Spieltage.Spielausgang = "Unentschieden" and contains(text(chosen(Einsatz)), "Ersatzspieler") and Spieltage.Heim = 1 and Spieltage.'Art Spiel' = 1 then
    10
    else
    0
    end
    end
    end
    end

    geht auch, aber hier sind die entsprechenden Prämien fest eingefügt und Sobald sich diese ändern der Code abgeändert werden

    Gruß

    Thomas

    • Thomas_Konradt
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

    sorry für die Nachfrage, aber habe ich mit meinen Antworten deine Frage beantwortet?

    Gruß

    Thomas

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Thomas,

    leider verstehe ich immer noch nicht wie du die Punkte anlegst. Ich habe auch von Fußball keine Ahnung. Wie genau sind die Punkte  (50,20,10...) in deiner Tabelle Punkteprämie festgelegt? 

    Leo

    • Thomas_Konradt
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

    also die Punktprämie werden bei uns am Anfang der Saison intern festgesetzt. Sie ist abhängig von der jeweiligen Spielklasse der Mannschaft. Die 50,20,10 sind hier lediglich fiktive Zahlen, um zu sehen ob das Script richtig rechnet.

    Letztendlich ist die Tabelle Punktprämie als eine Art "Peisliste" die sich jährlich ändert,zu sehen. Das Jahr spiegelt die Saison wieder (z.B 2020 / 2021) ist die aktuelle Saison die im September 2020 anfängt und im März 2021 endet.

    Gruß

    Thomas

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Tut mir leid, aber ich weiß immer noch nicht wo Ninox jetzt greifen soll wenn die Bedingungen erfüllt sind. Welche Felder gibt es in deiner "PreisListe"?

    du muss auch für 50,20, 10 irgendwelche Felder haben oder sich anders überlegt wie die Punkte entstehen.

    • Thomas_Konradt
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

    hier die Felder der Tabelle " Punktprämie "

    Wichtig dabei ist...in welcher Saison das Spiel stattfand, ob gewonnen oder verloren und ob der Spieler in der Startelf, Ersatzspieler etc war.

    Gruß Thomas 

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Thomas,

    noch eine Frage. Die Tabelle Punktprämie ist doch mit Spieltage verknüpft. Das in jedem Spieltag ist eine Verknüpfung zu dem richtigen Datensatz aus der Prämientabelle. dann wäre die Formel:

    ---

    if Spieltage.Spielausgang = "Sieg" and chosen(Einsatz, "Startelf") and Spieltage.Heim = 1 and Spieltage.'Art Spiel' = 1 then 
    Spieltage.'Punktprämie'.'Startelf Sieg'
    .....

    .....

    ---

    Leo

    • Thomas_Konradt
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

    vielen Dank.....passt

    Gruß

    Thomas