0

Zeiterfassung

Hallo,

ich habe eine Zeiterfassung, dort werden je nach Kunde die Termine und Einsatzzeiten eingetragen. Über die Zeiterfassung kann ich wunderbar meine monatlichen Rechnungen erstellen.

Nun möchte ich auch die eventuell anfallende Fahrtkostenpauschale in der Zeiterfassung anzeigen lassen. Es gibt ein Auswahlfeld namens Hauptstandort (Ja und Nein). Wenn Ja ausgewählt wird, soll die Fahrtkostenpauschale angezeigt werden. Ziel ist dann die Summe der Fahrtkostenpauschalen je Kunde in der Rechnung anzeigen zu lassen. Ich habe in einigen Tabellen bereits einige funktionierende Wenn Dann Sonst funktionen eingebaut. Dort funktioniert es leider nicht, es wird immer 0 Euro angezeigt.

Tabellen:

Zeiterfassung: (Spalten: Kunde, Hauptstandort (Ja/Nein), Fahrtkostenpauschale

Reisekosten: (Spalten: Kunde, Fahrtkostenpauschale)

 

Warum funktioniert das nicht mit der einfach Formelabfrage?

if text(Hauptstandort) = "Ja" then Reisekosten.'Fahrtkostenpauschale' else 0 end

 

Viele Grüße

Christian

11 Antworten

null
    • Micha
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Cristian,

    ein JA/NEIN feld kanst du einfach mit dem Feldname abfragen:

    let my := this;
    if HAUPTSTANDORT then select Reisekosten[Kunde = my.Kunde].Fahrtkostenpauschale else 0 end

    das "this" bezieht sich immer auf deinen aktuell geöffneten Datensatz.

    am besten nach enderung ausführen bei deinem JA/NEIN Feld.

    • Micha
    • vor 2 Jahren
    • Gemeldet - anzeigen

    ups sehe gerade das du jetzt zwar den Datensatz ausgewählt hast aber noch nicht das Feld damit gefüllt:

    Vollständig wäre es so:

    let my := this;
    my.Fahrtkostenpauschale := if HAUPTSTANDORT then select Reisekosten[Kunde = my.Kunde].Fahrtkostenpauschale else 0 end

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

    Hallo Micha,

    vielen Dank.

    let my := this;
    my.Fahrtkostenpauschale := if Hauptstandort then select Reisekosten[Kunde = my.Kunde].Fahrtkostenpauschale else 0 end

    Wenn ich das Eingebe kommt ein Fehler:

    Die Tabellenspalte ist kein einfaches Datenfeld: Zeile 2 Spalte 26

    Was ist damit gemeint?

    Gruß

    Christian

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

    sind beide Tabellen miteinander verknüpft?

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

    Ja die beiden Tabellen sind miteinander verknüpft, ich dachte das müssen die Tabellen auch.

    Mir ist jedoch noch eingefallen. Die Spalte Kunde ist eine Spalte aus einer weiteren Tabelle (Kundendatenbank), die jedoch bei Zeiterfassung und Reisekosten auch zwingend notwendig ist.

    • Ninox-Professional
    • planoxpro
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Christian, man könnte das Ja/Nein-Feld 'Hauptstandort' als Standard auf "Nein" oder "leer" setzen und mit einem Trigger "Nach Änderung" versehen:

     

    Fahrtkostenpauschale := if Hauptstandort then Kunde.Reisekosten.Fahrtkostenpauschale else 0 end

     

    Wobei 'Kunde' hier für den Namen der Verknüpfung zur Tabelle 'Kundendatenbank' steht, welche wiederum N:1 mit der Tabelle 'Reisekosten' verknüpft sein sollte.

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

    Hi Copytexter,

    klasse. Das mit dem Trigger hat funktioniert. ich musste allerdings noch ändern, ansonsten kam eine Fehlermeldung.

    Fahrtkostenpauschale := if Hauptstandort then number(Kundendatenbank.Reisekosten.Fahrtkostenpauschale) else 0 end

    Der Verweis Kundendatenbank bedeutet, dass beispielsweise die verknüpfte Spalte Kunde aus der Kundendatenbank auch abgeglichen werden werden?

    Vielen Dank für die Hilfe.

    Christian

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

    nein, die Tabellen müssen nicht verknüpft sein, um Daten abzufragen. Du musst dann allerdings jedes Datenfeld mit mit select Tabellenname.Datenname  abfragen.

    DIe Fehlermeldung bezieht sich wahrscheinlich darauf, dass das Feld Kunden in Reisekosten eben kein Feld, sondern eine Verknüpfung ist.

    ICh kenne die Struktur deiner Datenbank nicht, aber wenn das Feld Kunde sich auf eine Verknüpfung in der Tabelle Datenbank bezieht, solltest du so darauf zurückgreifen können:

    ....if Hauptstandort then select Reisekosten [Kundendatenbank.Kunde=my.Kunde].Fahrtkostenpauschale........

    • Ninox-Professional
    • planoxpro
    • vor 2 Jahren
    • Gemeldet - anzeigen

    @Christian: Wenn ich dein Datenmodell richtig interpretiert habe, dann ist die Kundentabelle 1:N mit der Zeiterfassung verknüpft und N:1 mit den Reisekosten.

     

    Um nun aus der Zeiterfassung auf die Reisekosten des betreffenden Kunden zugreifen zu können, kann man über die Punktnotation quasi einen Pfad angeben. Frei übersetzt bedeutet das:

     

    Gehe in den verknüpften Kunden-Datensatz, schaue dort, welcher Reisekosten-Eintrag verknüpft ist und hole aus diesem den Wert des Feldes 'Fahrkostenpauschale'.

     

    Die Tabellen Zeiterfassung und Reisekosten müssen also, wie Arsène richtig sagt, nicht direkt miteinander verknüpft sein, sondern können über die Kundentabelle als "Zwischenstation" aufeinander Bezug nehmen. In solchen Fällen ist kein "select" erforderlich, die Adressierung erfolgt über besagte Punktnotation.

    • Ninox-Professional
    • planoxpro
    • vor 2 Jahren
    • Gemeldet - anzeigen

    PS: Im Gegensatz zum "select", bei dem immer der Tabellenname angegeben werden muss, wird beim Zugriff auf verknüpfte Tabellen immer der Name angegeben, den die Verknüpfung in der jeweiligen Tabelle hat. Wenn man eine Verknüpfung erstellt, vergibt Ninox der Verknüpfung automatisch erst mal den Namen der Tabelle. Deshalb stimmen die Namen in der Regel überein. Man kann den Namen der Verknüpfung aber auch manuell ändern. Typisches Beispiel: Man hat eine Tabelle namens 'Kunden', die Verknüpfung in der Tabelle 'Rechnungen' ändert man aber auf den Singular 'Kunde', weil ja immer nur einer zugeordnet wird. Wenn man wie in deiner Konstellation den Weg über die Verknüpfung geht, muss man immer "Kunde" angeben, beim select hingegen müsste es "select Kunden" heißen.

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

    Vielen Dank für eure Hilfe, so langsam verstehe ich auf jeden Fall mehr von der Logik.

     

    Viele Grüße

    Christian

Content aside

  • vor 2 JahrenZuletzt aktiv
  • 11Antworten
  • 759Ansichten