Liebe Community,
ich habe eine wohl eher einfache Fragestellung:
Die Arbeitsstunden unser Monteure werden mit Access erfasst - die Tabelle soll hier mal "T_Zeiterfassung" heissen.
An manchen Tagen arbeitet nur 1 Kollege auf Baustelle x, an anderen Tagen auch mehrere.
So gibt es an einigen Tagen mehrere Einträge, an anderen evtl. auch nur einen Eintrag für diese Baustelle.
Wie kann ich in VBA die Anzahl der Einsatztage dieser Baustelle ermitteln?
In meinem Beispiel liefert:
Anzahl = Nz(DCount("Datum_Einsatz", "T_Zeiterfassung", "ID_Auftrag= " & ID_Auftrag))
die Gesamtanzahl der Einträge.
Ziel: Der Kunde bekommt je Einsatztag eine Anfahrtpauschale berechnet, diese ist aber unabhängig davon welcher Monteur bzw. wie viele Monteure auf der baustelle waren...
Könnt und mögt ihr helfen ?!
LG Matthias
Hallo Matthias,
Musst du in einer richtigen Abfrage zählen, wobei du nach dem Datums-Feld
gruppierst.
Luftcode
PARAMETERS AuftragsID As Long:
SELECT Count(Datum_Einsatz) AS Tage
FROM T_Zeiterfassung
WHERE ID_Auftrag = AuftragsID
GROUP BY Datum_Einsatz
gruss ekkehard
Hallo Ekkehard,
hab Vielen Dank.
Der Weg ist also in diesem Fall grundsätzlich nicht ohne "zwischengeschaltete" Abfrage möglich.
Das heisst:
1. Abfrage erstellen mit Gruppierung
2. Zählen der Datensätze in der Abfrage
Anzahl = Nz(DCount("Datum_Einsatz", "_erstellte_Abfrage", "ID_Auftrag= " & ID_Auftrag))
... so klappt es jedenfalls.
Mit Deinem "Luftcode" konnte ich so direkt nichts anfangen... das sollte der sql-code der Abfrage sein?!
Zitatdas sollte der sql-code der Abfrage sein?!
Genau. Schalte deine Abfrage in die SQL-Ansicht, - die sollte so
ähnlich ausschauen.
Hallo,
kleine Anmerkung:
Nz braucht es hier nicht. DCount kann nicht Null (Nix) liefern. Wenn es nichts zu zählen gibt wird eine 0 (die Zahl) angezeigt.
... lieben Dank. Passt.