4.5k Aufrufe
Gefragt in Datenbanken von
Hallo,
Ich möchte eine Tabellenerstellungsabfrage mit Access 2003 machen. Ich habe eine Tabelle die so aussieht:
hh:mm:ss Anzahl
20:30:05 2
20:30:45 1
20:45:01 2
22:01:03 4

und möchte mit einer Abfrage folgende Tabelle erstellen:
hh:mm:ss Anzahl
20:30:00-20:35:00 3
also eine Tabelle mit 5 minutenintervallen, in welchen die Anzahl summiert wurde.
Wie muss eine solche Abfrage gestaltet werden?
Vielen Dank für eure Hilfe.

11 Antworten

0 Punkte
Beantwortet von marie Experte (2k Punkte)
hh:mm:ss Anzahl
20:30:00-20:35:00 3


Also ich hab nicht wirklich verstanden was das hier für eine Tabelle sein soll?

Bitte schreibe mal genauer wie die Abfragentabelle aussehen soll. Soll da die Anfangszeit von dem 5-Minutenintervall stehen oder die Endzeit oder beides in zwei Spalten??

Also
hh:mm:ss Anzahl
20:30:00 3
20:35:00 0
20:40:00 0
20:45:00 2
20:50:00 0
20:55:00 0
.
.
22:00:00 4

Oder wie sonst?
Gruß marie
0 Punkte
Beantwortet von
Vielen Dank für deine Antwort.
Ja die Abfragetabelle soll so aussehen wie du sie da beschrieben hast. Eine Spalte mit den Endzeiten und dahinter die anzahl und das ganze in 5 minutenintervallen. Das dumme ist das ich auch noch unterschiedliche Datum in ein und derselben Ausgangstabelle habe, so dass sich die Zeiten wiederholen können. Ich habe jetzt eine spalte gamacht die Datum und Zeit enthält, aber ich schätze mal das wird von Access nicht erkannt.
Datum_Uhrzeit Anzahl
12.6.2007 20:30:45 2
12.6.2007 20:32:04 4
13.6. 2007 20:31:04 1
usw.

Ich habe überhaupt keine Ahnung wie ich das anstellen könnte.
Ich denke mal das das trotzdem recht einfach geht, aber ich habe mein fettes Access Buch durchgewälzt und nichts vergleichbares gefunden. :(

Es wäre ganz große Klasse wenn du mir helfen könntest.
Vielen Dank.
0 Punkte
Beantwortet von rahi Experte (1.5k Punkte)
Hallo,

hier ein Lösungsvorschlag:
SELECT CDate(Format([datum_uhrzeit],"dd.mm.yyyy hh:") & CInt(Minute([datum_uhrzeit])/5)*5 & ":00") & " - " & CDate(Format([datum_uhrzeit],"hh:") & CInt(Minute([datum_uhrzeit])/5)*5+5 & ":00") AS Datum5minIntervall, Sum(DatumAnzahl.Anzahl) AS Anzahlsumme
FROM DatumAnzahl
GROUP BY CDate(Format([datum_uhrzeit],"dd.mm.yyyy hh:") & CInt(Minute([datum_uhrzeit])/5)*5 & ":00") & " - " & CDate(Format([datum_uhrzeit],"hh:") & CInt(Minute([datum_uhrzeit])/5)*5+5 & ":00");
Mein zu Grunde liegende Tabelle heisst bei mir "DatumAnzahl" und die beiden Felder "datum_uhrzeit" von Typ Datum und "Anzahl" von Typ Zahl, Longint. Dies muss du natürlich an deine Tabellendefinition anpassen. Falls zu alle Zwischenintervalle, wie Marie das angedeutet hat auch benötigst, wirst du um VBA-Code nicht herum kommen.

Gruß
Ralf
0 Punkte
Beantwortet von
Vielen Dank, Ralf.
Leider kommt bei mir die Fehlermeldung "Datentypen in Kriterienausdruck unverträglich". Ich schätze das liegt daran, dass das Feld datum_uhrzeit irgendwie nicht richtig formatiert ist. weiß aber nicht wie ich das ändern kann. Also iim Feld datum_uhrzeit stehen jetzt folgende werte:
z.B. 12.06.2007 20:34:50 ich hab mal wo gelesen das in access das Jahr nur 2-stellig erkannt wird. Ich habe keine Ahnung wie ich das ändern soll, bei den Feldeigneschaften habe ich bereits Standartdatum ausgewählt.
0 Punkte
Beantwortet von
Hallo,
vielleicht hilft dir das Zeitmakro weiter.

Gruß
fedjo
0 Punkte
Beantwortet von
Hallo fedjo,
Vielen dank. Kannst du mir erläutern wie genau ich das verwenden kann?
0 Punkte
Beantwortet von rahi Experte (1.5k Punkte)
Hallo,

bitte schaue dir die "Regions- und Sprachoptionen" in der Systemeinstellung an. Dort solltest du die Formatierung für Datum (Kurzdatum: TT.MM.JJJJ) und Uhrzeit (HH:mm:ss) prüfen. Am Besten du stellst diese Werte auf "Deutschland". Die Einstellungsänderungen wirken sich direkt auf Access aus! Ich habe die Einstellung mal auf "Englisch" umgestellt und bekomme sofort die gleichen Probleme wie du. Ist auf jeden Fall interessant mal eine einstellungsunabhängige Lösung zu suchen. Falls das nicht funktioniert, mich welcher Access-version arbeitest du?

Gruß
Ralf
0 Punkte
Beantwortet von
Hallo Ralf,
die Schpracheinstellungen sind ok. Alles ist auf Deutsch(Deutschland) gestellt. Ich arbeite mit access 2003. Ich habe die datenbank nun auch mal komprimiert und repariert. Es funzt einfach nicht. Ich schreib gerade an meiner Diplomarbeit. Habe Landespflege studiert und deshalb leider nich so viel Ahnung von Datenbanken und co. Das ist alles total hinderlich, denn dieses Problem beschäftigt mich schon 3 Tage und wenn ich das nicht löse kann ich auch keine auswertungen machen. Ich habe 13000 solcher datensätze. Die kann ich ja nicht alle manuell zu intervallen formen. Ich bin schon völlig verzweifelt.
0 Punkte
Beantwortet von rahi Experte (1.5k Punkte)
Hallo,

ok, die Konfiguration hört sich ja gut an, leider. Ich habe die SQL-Abfrage nicht nur gebaut, sondern auch getestet. Bei mir funktioniert das Ganze einwandfrei. Schicke mir docheinfach mal die MDB mit der Tabelle und der Abfrage wenn du willst, dann schaue ich mal, ob ich was finde.
Einfach mailen an "hilfehilfe.5.hinki@spamgourmet.com". Ich würde dann die Lösung einfach posten.

Gruß
Ralf
0 Punkte
Beantwortet von rahi Experte (1.5k Punkte)
Hallo,

ok, es war mein Fehler. Meine Berechnung von 21:57 Uhr lieferte 21:55:00 - 21:60:00, was ja bekanntlich nicht ganz korrekt ist. Jetzt benutze ich die DateAdd-Funktion (und int statt cint) mit korrektem Ergebnis:

SELECT CDate(Format([datum_uhrzeit],"dd.mm.yyyy hh:") & Int(Minute([datum_uhrzeit])/5)*5 & ":00") & " - " & DateAdd("n",5,CDate(Format([datum_uhrzeit],"hh:") & Int(Minute([datum_uhrzeit])/5)*5 & ":00")) AS Datum5minIntervall, Sum(DatumAnzahl.Anzahl) AS Anzahlsumme
FROM DatumAnzahl
GROUP BY CDate(Format([datum_uhrzeit],"dd.mm.yyyy hh:") & Int(Minute([datum_uhrzeit])/5)*5 & ":00") & " - " & DateAdd("n",5,CDate(Format([datum_uhrzeit],"hh:") & Int(Minute([datum_uhrzeit])/5)*5 & ":00"));
Sorry noch mal. Passt's jetzt?

Gruß
Ralf
...