0

Verweis auf andere Tabelle

Servus. 

Ich benötige mal wieder bitte eure Hilfe.

Ich möchte gerne für den Verein eine automatisierte email mit den entsprechenden Gebühren verschicken. Die Mail funktioniert, aber die Gebühren nicht. Leider ändern sich jährlich die Gebühren, sodass ein absoluter Wert nicht geht

Bestand:

Tabelle 1: Gebührenkatalog - Jahr, Clubbeitrag EW, Clubbeitrag Jugend, …., ….

Nun möchte ich in einer neuen Tabelle, dass für das entsprechende Abrechnungsjahr  - Auswahlfeld "ReJahr" bei mir - aus der richtigen Spalte UND Zeile von Gebührenkatalog der Wert ausgelesen wird. 

Natürlich soll das ganze auch noch anteilig dafür berechnet werden können, wenn jemand neu dazukommt. Ich habe ein Auswahlfeld mit den Jahreszahlen. 

Beispiel: Max Mustermann ist lediglich 15, kommt ab Juni neu in den Club und muss demnach den Jugendbeitrag für 2020 anteilige für 7 Monate zahlen. 

hier mal die anteilige Berechnung

let Alter := age(Kontakte.Geburtsdatum);
let myJahr := year(now());
let anteilig := if year(Kontakte.Eintrittsdatum) = myJahr then
13 - number(month(Kontakte.Eintrittsdatum))
else
12
end;
let Gebuehr := if Alter >= 13 and <= 17 then
'Gebührenkatalog'.'Clubbeitrag Jugend'
else
'Gebührenkatalog'.'Clubbeitrag Erwachsener'
end;
sum((select 'Gebührenkatalog')[Jahr = Kontakte.'Gebührenübersicht'.ReJahr].Gebuehr) * anteilig / 12

Und jetzt fangen meine Probleme an. Wie verweise ich jetzt auf die entsprechende Zeile in der Tabelle „Gebührenkatalog“??? Mit If then else komme ich nicht weiter und mit den "let" und "select". Führt aber leider auch nicht zum Erfolg. Ich habe im Forum schon einige Ansätze versucht umzusetzen, aber das passt leider alles nicht. Vielen Dank für die Hilfe vorab.

Carlo

2 Antworten

null
    • Torsten_Stang.1
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Carlo,

     

    offen gestanden erschließt sich mir Dein Datenmodell nicht - wo (in welcher Tabelle) führst Du denn die Berechnung des Clubbeitrags durch?

     

    Hier auf jeden Fall schon mal ein paar generelle Hinweise, die mir zu Deinem Code auffallen:

    - wenn 'ReJahr' wie angegeben ein Auswahlfeld ist, gibt die einfache Verwendung des Feldnamens lediglich die ID der gewählten Option zurück und nicht den Inhalt. Auf diesen greift man mit text(AUSWAHLFELD) zu. Unter Umständen ist es sogar nötig, number(text(AUSWAHLFELD)) zu verwenden.

    - Ich vermute mal, Du hast in der Tabelle 'Gebührenkatalog' für jedes Jahr EINEN Datensatz mit den entsprechenden Werten? Mit "select 'Gebührenkatalog' [Jahr = xyz]" weist Du Ninox an, ALLE Datensätze aus der angegebenen Tabelle zu wählen, die den Kriterien in [] entsprechen. Du weißt, das es dazu sicher nur einen gibt, Ninox eben nicht. Entsprechend musst Du in Deiner Formel Ninox anweisen, EINEN bestimmten zu wählen - z.B. den ersten ("first(select 'Gebührenkatalog' [Jahr = xyz])"

     

    lg, Torsten

    • Carlo_Luft
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Torsten, danke schon einmal für die Antwort. Ich versuche mal deine Anregungen umzusetzen. 

    Zu meinem Datenmodell: Eine Tabelle ist der Mitgliederstamm. Dazu gehört eine Untertabelle mit den genazen anfallenden Gebühren, die alle Mitglieder zu zahlen haben. In einer zweiten Tabelle ist sind die ganzen Beträge hinterlegt, auf die ich dann zurückgreifen möchte, wenn ein neuer Datensatz für das Clubmitglied angelegt wird, wenn Zahlungen fällig sind. 

    Ich hoffe, die Erklärung hat dir erst einmal weitergeholfen.

    LG

    Carlo