0

Einträge in verknüpfter Untertabelle zählen mit Bedingung

Ich habe eine Tabelle mit Mitarbeitern. In einer Untertabelle möchte ich die Fehltage (aufgeteilt in Urlaub, Überstunden, krank...) auflisten. In der Ausgangstabelle wollte ich nun die genehmigten Urlaubstage - genommene Urlaubstage abziehen und den Resturlaub anzeigen. Es scheitert aber leider schon am Zählen der Einträge in der Untertabelle. Es sollen alle Einträge mit Grund = 1 gezählt werden. Ich habe das versucht aber es kommt immer eine Fehlermeldung wie im Screenshot zu sehen. Zähle ich alle Einträge klappt es aber ich benötige nur die mit Grund = 1. Was stimmt nicht an meiner Formel?Bildschirmfoto 2018-08-03 um 11.59.41

5 Antworten

null
    • Tacho
    • vor 5 Jahren
    • Gemeldet - anzeigen

    versuch's mal mit:

    ___
    cnt('Fehltage/Urlaub'[Grund = 1])
    ___

    • Dirk_Patzer
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Danke Tacho. Funktioniert wunderbar. Mit dem select-Befehl tue ich mich nach wie vor schwer. Anschlussfrage wäre: 

    Ich habe eine Untertabelle "Daten" in der für jedes Jahr die Zahl der Urlaubstage, das Gehalt usw. als Basis drin stehen. Wenn ich dann in meiner Tabelle "Mitarbeiter" einen Mitarbeiter auswähle, möchte ich per Auswahlfeld ein bestimmtes Jahr auswählen und dann soll in einem Formel-Feld automatisch das in diesem Jahr gültige Gehalt stehen und auch andere Dinge. Ich habe es probiert mit:

    _____

    select Daten.Gehalt where year(Datum) = 2018

    _____

    und auch mit

    _____

    (select Daten.Gehalt)[year(Datum)=2018];

    _____

    und anderen Varianten. Es funktioniert aber nicht. Manchmal kommt eine Fehlermeldung vorab oder das Formelfeld bleibt leer. Wo liegt mein Denkfehler bzw. Codefehler?

    • Dirk_Patzer
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Habe es jetzt so hinbekommen:

    _______

    let myYear := (select Daten)[year(Jahr) = 2018];
    myYear.Gehalt

    _______

    ...wobei ich nicht weiß, ob das die eleganteste Lösung ist.

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Dirk,

    mit select sprichst du die globale Tabelle an. Wenn du mehrere Mitarbeiter hast, sollte in deiner Abfrage mehrere Gehälter auftauchen. Die Verknüpfte Tabelle wird ohne select angesprochen. Dann werden nur die mit der Haupttabelle verknüpften daten bearbeiten. 

    first(Daten[Bedingung]).Gehalt

    Bedingung kann ich hier nicht einschätzen. Wenn in Daten Jahr als Textfelt steht und in der Haupttabelle als auswahlfeld, dann wäre die Formel:

    let myYEAR:=text("Dein Auswahlfeld Jahr")

    first(Daten[Jahr=myYEAR]).Gehalt

     

    first steht hier, weil theoretisch auch mehrere Datensätze mit 2018 vesehen werden können. Da Ninox das nicht weiß, macht er an der Telle vorsichtshalber einen Array als Ergebnis. Mit first machst du aus dem Array einen String (Wert)

    Leo

    • Dirk_Patzer
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Perfekt Leo! Ohne select funktioniert es einwandfrei. Danke!

Content aside

  • vor 5 JahrenZuletzt aktiv
  • 5Antworten
  • 2846Ansichten