Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Anzahl Tage bis heute berechnen

Begonnen von fegefeuer, November 10, 2017, 20:54:42

⏪ vorheriges - nächstes ⏩

fegefeuer

Hallo liebe Access-Freunde,

ich habe ein Problem bei der Berechnung einer Anzahl von Tagen bis heute.

Ich habe ein Feld [SLA Ende] und ein Feld [Restlaufzeit].

Ich möchte nun im Formular beim aufruf des Datensatzes die Anzahl an Tagen bis [SLA Ende] berechnen.
dies habe ich mit    >DatDiff ("d", [SLA Ende], heute())<      berechnet.

Leider bekomme ich hierbei die Fehlermeldung:

"Sie haben als Einstellung der Ereigniseigenschaft den Ausdruck beim Hingehen eingegeben. Dieser Ausdruck hat einen Fehler verursacht: Der von Ihnen eingegebene Ausdruckenthält den Namen einer Funktion, die von Microsoft Access nicht gefunden werden kann."

Was mache ich hier falsch??

Vielen Dank im voraus!

MzKlMu

Hallo,
Heute() gibt es nicht bei VBA.
Entweder Jetzt() (Datum mit Uhrzeit) oder Datum().
Außerdem ist in einem deutschen Access t zu verwenden sowie Semikolons.
=DatDiff ("t"; [SLA Ende]; Datum())
Oder einfach so:
=[SLA Ende] - Datum()        
Gruß Klaus

PhilS

Zitat von: fegefeuer am November 10, 2017, 20:54:42
Ich möchte nun im Formular beim aufruf des Datensatzes die Anzahl an Tagen bis [SLA Ende] berechnen.
dies habe ich mit    >DatDiff ("d", [SLA Ende], heute())<      berechnet.

Leider bekomme ich hierbei die Fehlermeldung:

"Sie haben als Einstellung der Ereigniseigenschaft den Ausdruck beim Hingehen eingegeben. Dieser Ausdruck hat einen Fehler verursacht: Der von Ihnen eingegebene Ausdruckenthält den Namen einer Funktion, die von Microsoft Access nicht gefunden werden kann."

Ich halte nicht viel von deutschen Übersetzungen in der Programmierung und empfehle immer die englischen Ausdrücke zu verwenden. - Wenn Access sie dir automatisch übersetzt, kann Access sie bei Bedarf i.d.R. auch zurückübersetzen. Wenn du sie direkt auf Deutsch schreibst, klappt das nicht immer.

Dass Hauptproblem ist aber, dass die Funktion DateDiff heißt.
DateDiff ("d", [SLA Ende], Date())


Wieso eigentlich beim Hingehen? Ich würde entweder, wenn du den Wert speichern willst, per VBA im Current-Ereignis (Beim Anzeigen) machen oder, nur für die Anzeige im Formular, direkt in den Steuerelementinhalt schreiben.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

MzKlMu

Hallo,
ich hatte in meinen Vorschlägen keine Ereignisprozedur verwendet, sondern direkt in ein Formularfeld. Wenn man das so macht, hat man gar keine andere Wahl als die deutsche Syntax zu benutzen. Das beim Hingehen hatte ich überlesen.
Das heißt aber, die Restlaufzeit soll in der Tabelle gespeichert werden, was aber falsch ist. Das Formularfeld (oder Berechnung in einer Abfrage) reicht. Die Restlaufzeit kommt nicht in die Tabelle das wäre ein Fehler.
Gruß Klaus

PhilS

Zitat von: MzKlMu am November 10, 2017, 23:33:01
...direkt in ein Formularfeld. Wenn man das so macht, hat man gar keine andere Wahl als die deutsche Syntax zu benutzen.
Das trifft eigentlich nur auf das Listentrennzeichen (Komma vs. Semikolon) zu. Welches eher dem Zahlenformat als der Sprache zuzuordnen ist. Den Rest versteht ein "deutsches" Access auch auf englisch.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

fegefeuer

Hallo Access-Freunde,

vielen Dank für eure schnellen Antworten.

Ich bin noch nicht so lange mit Access unterwegs.
Allerdings habe ich jetzt jede eurer Berechnungen im Formularfeld unter "Eigenschaften - Ereignis - Nach Aktualisierung" eingetragen und bekomme immer noch keinen Wert in meinem Feld  "Restlaufzeit" angezeigt.

Welche Möglichkeiten gibt es denn noch den Wert aus [SLA-Ende] bis Datum() im Feld "Restlaufzeit" zu ermitteln.

Vielen Dank für eure Hilfe

MzKlMu

Hallo,
die Formel hat mit den Eigenschaften nichts zu tun. Lösche den Eintrag dort wieder.
Bei Steuerelementinhalt trägst Du dann ein:
=[SLA Ende] - Datum()   

PS:
Du solltest auch über die Struktur noch mal nachdenken. Die Aufzählungsfelder (Dauer Telefonat und Dauer Datenbearbeitung) sollten in eine extra Tabelle als je ein Datensatz. Aufzählungsfelder sind Felder mit gleichem Namen aber einer zusätzlichen Zahl. Diese sind für eine Datenbank ungeeignet. 
Gruß Klaus

Beaker s.a.

Zusätzlich zu Klaus, entferne die Sonderzeichen aus den Tabellenfeldnamen.
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)