PDA

Vollständige Version anzeigen : wie erstelle ich eine Summe(ausAnzahl) pro Stunde gruppiert?


Bojan
23.01.2008, 10:44
Hallo Leute,

irgendwie stelle ich mich gerade richtig doof an:p

Ich habe eine Tabelle in welcher Daten gespiechert werden mit Protokoll
in einer Spalte habe ich die Create_Time und in der Nachbarspalte die Log_time.

Log_time-Create_Time ergibt die produktive Zeit pro Fall für den Mitarbeiter.

Jetzt möchte ich in meiner Form(im Unterformular) eine Übersicht erstellen lassen wieviel (heute pro Std. gruppiert ) vom Benutzer an Tätgkeiten bzw. Accounts erfasst worden sind.

Create & Logtime haben folgendes Format "datum hh:nn:ss"

also habe ich eine Abfrage erstellt in welcher die Anzahl der erfassten Accounts gezählt werden. Benutzername ist eine Funktion welche mir den als Bedingung nur den eingeloggten User in der Abfrage filtert. Create_Time habe ich darauffolgend mit "hh" formatiert (ohne =Format...) innerhalb der Abfrage... hier der SQL - String

SELECT tbl_TEAT_DATEN.Create_Time AS STD, Count(tbl_TEAT_DATEN.Account_Nr) AS ANZ_TD, tbl_TEAT_DATEN.Klick AS ART
FROM tbl_TEAT_DATEN
WHERE (((tbl_TEAT_DATEN.User)=benutzername()) AND ((tbl_TEAT_DATEN.Datum)=Date()) AND ((tbl_TEAT_DATEN.Account_Nr)>1 Or (tbl_TEAT_DATEN.Account_Nr)<1))
GROUP BY tbl_TEAT_DATEN.Create_Time, tbl_TEAT_DATEN.Klick
WITH OWNERACCESS OPTION;

diese Abfrage verwende ich für die wirkliche Summen - Abfrage wenn ich STD mit in die Abfrage miteinbeziehe gruppiert mir Access jeden einzelnen Datensatz:
Grund: das angezeigte Format wird immer noch als "datum hh:nn:ss" gruppiert aber als "hh" angezeigt.

Wie macht man´s richtig? wie Gruppiere ich eine Summe pro Stunde pro Mitarbeiter.

Gruß und Dank im voraus

Bojan

Bojan
23.01.2008, 11:54
Hallo Leute,

ich habe es zuerst mit datpart lösen wollen, war aber falsch. Jetzt habe ich die Datumsfelder mit =Rechts & = Links zerpflückt und siehe da ich kann dann auch per Std. gruppieren ; )

hier der SQL-Code der ersten Abfrage:

SELECT tbl_TEAT_DATEN.Create_Time AS STD, Count(tbl_TEAT_DATEN.Account_Nr) AS ANZ_TD, tbl_TEAT_DATEN.Klick AS ART, tbl_TEAT_DATEN.Create_Time, Right([Create_Time],8) AS A, Left([A],2) AS B
FROM tbl_TEAT_DATEN
WHERE (((tbl_TEAT_DATEN.User)=benutzername()) AND ((tbl_TEAT_DATEN.Datum)=Date()) AND ((tbl_TEAT_DATEN.Account_Nr)>1 Or (tbl_TEAT_DATEN.Account_Nr)<1))
GROUP BY tbl_TEAT_DATEN.Create_Time, tbl_TEAT_DATEN.Klick, tbl_TEAT_DATEN.Create_Time, Right([Create_Time],8)
WITH OWNERACCESS OPTION;


und hier der SQL-String der Summenabfrage:

SELECT qry_Stunden_to_do.B AS Std, Sum(qry_Stunden_to_do.ANZ_TD) AS Summe
FROM qry_Stunden_to_do
WHERE (((qry_Stunden_to_do.ART)=0))
GROUP BY qry_Stunden_to_do.B
WITH OWNERACCESS OPTION;


Manchmal sind die einfachen Lösungen auch die richtigen :grins:

Gruß und Dank

Bojan

Bojan
23.01.2008, 12:09
wäre, wenn ich eine dritte Abfrage erstellen könnte welche prüft wieviel in der aktuellen Stunde (lt. System-Uhr) Tätigkeiten erfasst worden sind um sie per ´Domänenfunktion in die Form darstellen zu lassen.


Frage;

Wie frage ich Now() in Verbindung mit dem gerade beschriebenen Konstrukt ab?

Bedingung in Spate B (zweite Summenabfrage)

if Now()... Format "hh"



Gruß :grins:

Bojan

Bojan
23.01.2008, 13:03
hier die Lösung der dritten Abfrage,

SELECT qry_Summe_todo_TAET.Std, qry_Summe_todo_TAET.Summe, (IIf(Format(Now(),"h")<>[Std],"0",[Std])) AS Std_akt_zeit
FROM qry_Summe_todo_TAET
GROUP BY qry_Summe_todo_TAET.Std, qry_Summe_todo_TAET.Summe, (IIf(Format(Now(),"h")<>[Std],"0",[Std]))
HAVING ((((IIf(Format(Now(),"h")<>[Std],"0",[Std]))) Not Like "0"))
WITH OWNERACCESS OPTION;


Habe es über eine Wenn abfrage gelöst,

Format = Format(Jetzt();"h")
wenn die Systemzeit z.B. 13:49:00 ist wird 13 zurückgegeben.

in der o.g. Abfrage ist das Prüffeld der Abfrage dann wie folgt

Std_akt_zeit: (Wenn(Format(Jetzt();"h")<>[Std];"0";[Std]))


und in der gleichen Spalten wird unter Kriterien

Nicht Wie "0" eingetragen

somit erscheinen wirklich nur die Anzahl der erfassten Tätigkeiten der aktuellen Stunde ;)

Gruß

Bojan


PS Nachtrag & Änderung:

In Spalte Summe muss Summe hinterlegt werden und nicht Gruppierung

jetzt ist´s richtig

SELECT qry_Summe_todo_TAET.Std, Sum(qry_Summe_todo_TAET.Summe) AS SummevonSumme, (IIf(Format(Now(),"h")<>[Std],"0",[Std])) AS Std_akt_zeit
FROM qry_Summe_todo_TAET
GROUP BY qry_Summe_todo_TAET.Std, (IIf(Format(Now(),"h")<>[Std],"0",[Std]))
HAVING ((((IIf(Format(Now(),"h")<>[Std],"0",[Std]))) Not Like "0"))
WITH OWNERACCESS OPTION;
:D