0

Spaltenvergleich miteinander, dann Wert von einer bestimmten Spalte übernehmen

Hallo Forum,

ich habe in meiner Kundendatenbank die Spalte "Aktuelles Betreuungsjahr" eingerichtet. Diese Spalte wird automatisch mit dem aktuellen Jahr gefüllt (derzeit 2021).

In der Tabelle gibt es Spalten für die Entwicklung des Stundensatzes (sind nach dem jeweiligen Jahr benannt 2021, 2022, 2023....). Der Stundensatz erhöht sich  in der Regel um 2% in der Spalte. Jetzt möchte ich die Spalte "Aktuelles Betreuungsjahr" mit den jeweiligen Namen der Spalten abgleichen (2021, 2022, 2023....), falls eine Übereinstimmung vorhanden ist, soll der Stundensatz der Spalte in Spalte "Stundensatz" eingetragen werden.

Habe es mit der visuellen Funktion if then else probiert, bekomme es aber nicht so einfach wie bei Excel hin.

Kann mir jemand einen Tipp geben.#

Vielen Dank vorab

Christian  

13 Antworten

null
    • T_Bartzsch
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Christian, du hast also alle Spalten in einer Tabelle richtig? Ist das nötig, die Spalten mit allen Stundensätzen und Jahren in der gleichen Ansicht anzuzeigen? 

    Sinniger wäre es, wenn Du eine neue Tabelle, z.B. namens "Stundensätze" anlegen würdest, mit einem Zahlenfeld "Jahr" und einem Zahlenfeld "Stundensatz".

    In deiner Kundentabelle kannst Du dann nämlich mit einem Funktionsfeld auf diese Tabelle verweisen und - wie gewünscht - das betreffende Jahr herausfiltern

    Also, eine Spalte mit einem Funktionsfeld anlegen, darin dann:

     

    let myJahr := year(today());

    first(select Stundensätze [Jahr = myJahr]).Stundensatz

     

    Macht übersetzt:

    Gib der Variable "myJahr" die aktuelle Jahreszahl;

    Wähle aus der Tabelle Stundensätze den ersten Eintrag den Du findest wo die Spalte "Jahr" = myJahr ist und gibt dann die Spalte "Stundensatz" aus

     

    Du hast So deine Stundensätze getrennt in einer anderen Tabelle und lässt dir immer nur das aktuelle Jahr in deiner Kundenabelle anzeigen

    • A.M.U. Beratung Ingenieurbüro Schünzel
    • Christian_Schunzel
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Vielen Dank für die Hilfe, werde ich so umsetzen.

    • A.M.U. Beratung Ingenieurbüro Schünzel
    • Christian_Schunzel
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Ich weiß zwar wie ich eine Tabelle mit einer anderen Tabelle verknüpfen kann, jedoch erscheint dann lediglich die Überschrift der Spalte ohne Inhalt.

    Beispiel Kundenname. Mein Ziel ist ja, dass alle Kundennamen in der neuen Tabelle automatisch aus der verknüpften Tabelle übernommen werden, also eine Verknüpfung stattfindet, ansonsten macht die Verknüpfung ja keinen Sinn.

    Die Spalten sind aber immer leer. Muss hier noch etwas bestimmtes in den Einstellungen eingestellt werden.

    Vielen Dank vorab

    Christian

    • T_Bartzsch
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Gehört das noch zu deinem obigen Problem, oder ist das eine neue Frage?

    Wenn Du eine Tabelle mit einer anderen verknüpfst, stellst Du zunächst erstmal die Verbindung her.... Du musst dann noch jedem Datensatz aus der einen Tabelle einen Datensatz aus der anderen Tabelle zuweisen... Je nach Art der Verknüpfung (n:1 oder 1:n, Verknüpfung oder Rückverknüpfung) können entweder mehrere Datensätze einem einzigen Datnesatz zugeordnet werden oder ein Datensatz fest einem anderem. 

    • A.M.U. Beratung Ingenieurbüro Schünzel
    • Christian_Schunzel
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Ja gehört noch zu dem Problem. Ich möchte nun eine neue Tabelle, wie von Dir vorgeschlagen, erstellen (Stundensätze).

    Diese habe ich nun verbunden mit der Kundendatenbank (dort steht auch Verknüpfung N:1). Nun sind die Spalten vorhanden, ich muss derzeit für meine 24 Kunden jedoch jeden einzelnen auswählen und alle zugehörigen Spalten füllen sich automatisch. Die Tabelle soll sich aber bei z. B. Hinzufügen eines neuen Kunden in der Kundendatenbank automatisch aktualisieren. Mir ist nicht klar wie das richtig eingestellt wird. Habe mir hier auch die Anleitung angeschaut, finde hier aber kein passendes Beispiel.

    • RMS Immobilière
    • Arsene_Nickels
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo

    ich weiss nicht ob ich deine Tabellenstruktur vertanden habe.  Du hast einerseits eine Kundentabelle, andrerseits eine Tabelle, die pro Jahr einen gewissenen Wert (Stundensatz) ausweist. Diese Tabelle (resp diese Stundensätze) ist für alle Kunden gleich, oder? Dann brauchst du doch nicht den Kunden da noch einfügen. Du brauchst noch nicht mal eine Verknüpfung, weil du per select-Anweisung auch auf nicht verknüpfte Tabellen zugreifen kannst.

    Es genügt, wenn du in der Kundentabelle ein Berechnungsfeld anlegst, wie oben von Tobias vorgeschlagen

    let myJahr := year(today());

    first(select Stundensätze [Jahr = myJahr]).Stundensatz

    Die Stundensätze-Tabelle muss nur 2 Spalten haben: Jahr und Stundensatz, und fertig

    lg

    Arsène

    • T_Bartzsch
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Genau.... :)

    • A.M.U. Beratung Ingenieurbüro Schünzel
    • Christian_Schunzel
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hi,

    Danke. Die Stundensätze sind je Kunde allerdings unterschiedlich. Nicht jeder Kunde hat den selben Stundensatz, dieser entwickelt sich teilweise auch jährlich unterschiedlich, meist 2%, bei wenigen 1,5% Erhöhung. Daher ist eine Zuordnung zum Kunden wichtig. Sofern ich die Berechnung verstanden habe, ist diese so aufgebaut, dass für alle Kunden der exakt selbe Stundensatz gilt.

    Viele Grüße

    • T_Bartzsch
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Christian,

    wenn die Stundensätze bei allen Kunden unterschiedlich sind, dann macht unsere oben beschriebene Lösung auch keinen Sinn. Wieviele Spalten für die Entwicklung des Stundensatzes möchtest Du denn anzeigen? Die kommenden 5 Jahre? Oder möchte man dem Kunden die Entwicklung zB. für das Jahr 2030 zeigen? Dann könntest Du pro Kunde ein Eintrittsdatum bzw. Eintrittsjahr anlegen (das kann ein einfaches Zahlenfeld sein), dann ein Auswahlfeld mit der Erhöhung (1,5 %, 2 %) und den Basis-Stundensatz. Dann lässt Du dir in 5 Funktionsfeldern die kommenden 5 Jahre ausrechnen.

    Wenn sich allerdings die Erhöhung pro Jahr auch noch ändert, dann wird es komplizierter - dann haben wir ja kaum noch Konstante Werte und jeder Kunde hat individuelle Daten.

     

    Zum Thema Verknüpfung:

    Wenn Du eine Verknüpfung (n:1) auf eine andere Tabelle anlegst, dann ist diese erstmal leer. Über eine Funktion oder einen Button musst du dieser Verknüpfung die ID des Datensatzes zuweisen den Du verknüpfen willst. Oder Du musst diesen Datensatz manuell über das + zuweisen. Per Formel ginge das so:

    DEINEVERKNÜPFTETABELLE := 15 

    Weißt der verknüpften Tabelle den Datensatz mit der internen ID/Nr 15 zu.

    Du kannst dabei aber auch nach Kriterien Filtern bzw. nach Übereinstimmungen suchen.

    Also als Besipiel - du hast eine Tabelle "Namen" (mit Feldern Vorname und Nachname) - und eine Tabelle "Adressen" (mit Vorname, Nachname, Str, PLZ und Ort). Adressen ist mit Namen verknüpft.

    Jetzt kannst Du über einen Button mit der Funktion

    let myName :=  Nachname;

    Adressen := first(select Adressen where Nachname = myName)

    die den ersten Datensatz zuweisen wo die Nachnamen übereinstimmen...

    • A.M.U. Beratung Ingenieurbüro Schünzel
    • Christian_Schunzel
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Tobias,

    vielen Dank für den Hinweis, habe das Anfangs schlecht beschrieben. Die Erhöhung bleibt jährlich immer die Selbe je Kunde. Ich werde versuchen wie von Dir beschrieben eine Formel zu kreieren, hatte ich auch vor, wusste bisher nur nicht wie genau ich das anstellen soll.

    Felder in der Tabelle existieren dazu schon: Startjahr, Start Stundesatz, 2021, 2022, 2023...., Erhöhung (%) 

    Ich merke auf jeden Fall, so auf die Schnelle die Datenbank von Excel in Ninox zu übertragen ist dann doch nicht möglich, wenn die Datenbank sinnvolle Funktionen erhalten soll. Für einen Leihen wie mich ist das gar nicht so einfach. 

    Die Vrknüpfung dem Datensatz zuzuordnen habe ich verstanden, im Ninox konnte ich jedoch nirgends erkennen wo ich die ID deines Datensatzes einsehen kann. Im Manual konnte ich dazu auch nichts finden.

    Viele Grüße

    Christian

    • T_Bartzsch
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Die ID ist die Spalte Nr.... Klicke in deiner Liste mit rechter Maustaste auf irgendeinen Spaltennamen, gehe auf "Spalten einblenden" und wähle NR .... das sind die Ninox-Internen IDs für jeden Datensatz. Diese werden übrigens immer nur einmal vergeben... löscht Du einen Datensatz und legst einen neuen an bekommt dieser auch eine andere Nummer. Nicht wundern... 

    • T_Bartzsch
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Bildschirmfoto 2021-03-18 um 16.00.10

    Bildschirmfoto 2021-03-18 um 16.00.24

    Bildschirmfoto 2021-03-18 um 16.00.37

    • A.M.U. Beratung Ingenieurbüro Schünzel
    • Christian_Schunzel
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Tobias,

    vielen Dank für die Erklärung.

    Ich versuche das gerade mit der Formel deineverknüptfe ID ......

    Bei der ID handelt es sich ja immer nur um die jeweilige Zeilen ID. Erstelle ich einen Button mit der Formel, wird ja immer nur der Kunde mit der ID 15 in die Zeile eingefügt. Ich will jedoch, dass alle Zeilen (Kunden), die angelegt wurden auch automatisch in der verknüpften Tabelle eingespielt werden. Damit die manuelle Eintragung verhindert wird. Wahrscheinlich habe ich es wieder nicht verstanden.