Arbeitszeiterfassung
![](https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/79c5879f-b0fc-44ab-a6d9-6505e031b4d2/h/547.png)
Ich bin Neuling bei Ninox und versuche eine Zeiterfassung zu basten. Ich möchte gerne zu Arbeitskarten eine Gesamtdauer addieren. Hierzu möchte ich beim deaktivieren des Button Zeiterfassung aktiv die Dauer in einer neuen Tabelle mit der zugehörigen Arbeitskarte ablegen um mir die Summe in der Formel zusammenzurechnen.
Mit
if 'Zeiterfassung aktiv' = 1 then
'Datum + Uhrzeit Start' := now()
else
'Datum + Uhrzeit Ende' := now();
Zeitdauer := 'Datum + Uhrzeit Ende' - 'Datum + Uhrzeit Start';
let neuerEintrag := (create Einzelzeiten);
neuerEintrag.(Einzelzeit := first((select Zeiterfassung).Zeitdauer));
neuerEintrag.(ArbeitskarteID := first((select Zeiterfassung).Arbeitskarte))
end
funktioniert es solange nur ein Eintrag zum Stoppen vorhanden ist.
Wie komm ich mit der select Abfrage an die aktuelle Zeile nicht die erste Zeile? Bzw. wie kann ich mit where die Arbeitskarte eingrenzen?
2 Antworten
-
Hallo Jonas, ich bin mir nicht sicher, ob ich das Datenmodell richtg verstehe, aber mit first() greifst du immer auf den ersten Datensatz der Tabelle zu, also auf den zuerst erstellten. Man könnte statt dessen entweder mit "this" die ID des aktuellen Datensatzes in eine Variable übernehmen und diese einsetzen. Oder die Werte des aktuellen Datensatzes in Variable schreiben und zuweisen. Beispiel für letzteres:
if 'Zeiterfassung aktiv' = 1 then 'Datum + Uhrzeit Start' := now() else 'Datum + Uhrzeit Ende' := now(); let myDauer := 'Datum + Uhrzeit Ende' - 'Datum + Uhrzeit Start'; let myKarte := Arbeitskarte; let neuerEintrag := (create Einzelzeiten); neuerEintrag.(Einzelzeit := myDauer)); neuerEintrag.(ArbeitskarteID := myKarte)) end
-
Hallo Planox,
danke. Genau so war es gemeint.
Content aside
- vor 2 MonatenZuletzt aktiv
- 2Antworten
- 46Ansichten
-
2
Folge bereits