Moin,
bis jetzt zähle ich per SQL einfach die Anzahl der Einträge wenn bestimmte Kriterien vorhanden sind:
SQL = "select count(*),Schicht " & _
"FROM " & Tabelle & " " & _
"WHERE Datum like '" & Format(Tag, "dd.mm.yy") & "' " & _
"and Dauer >= " & Dauer & " " & _
"AND FSN='" & FSN & "'" & _
"AND StatusBitDescription " & Fehler & " " & _
"AND Bereich like '" & Bereich & "' " & _
"GROUP BY Schicht"
So sieht die Datenbank aus:
Access.jpg
Jetzt möchte ich aber, wenn
- der Eintrag in Spalte Gerät gleich ist
- und die EndDateTime des nächsten Eintrages weniger als 1 Minute vor der StartDatetime ist
das als ein Eintrag gezählt wird und nicht als zwei.
Anhand der Liste (Bild)
- sollte Zeile 3 & 4 als ein Eintrag gewertet werden.
- sollte Zeile 5 & 6 als ein Eintrag gewertet werden.
- sollte Zeile 7 & 8 als zwei Einträge gewertet werden.
- sollte Zeile 9 & 10 als zwei Einträge gewertet werden.
- sollte Zeile 10 & 11 als ein Eintrag gewertet werden.
usw..
Versteht ihr, was ich möchte?
Wie kann ich das hin bekommen.
Wenn ich das obere Makro so umwandeln könnte, dass er die Daten temporär in eine Excel Tabelle kopiert, würde ich es per Excel Makro problemlos hinbekommen.
Kann mir jemand helfen?
MfG
KaJu74
Hallo,
Lösung mittels Export nach Excel:
Abfragedaten in Temp-Tabelle schreiben und diese mit Transferspreadsheet nach Excel befördern.
(Korrekturen beachten!)
.
.
.
.
Currentdb.Execute "Insert Into TblTemp Select count(*),Schicht " & _
" FROM [" & Tabelle & "]" & _
" WHERE Datum = " & Format(Tag, "\#yyyy-mm-dd\#") & _
" and Dauer >= " & Dauer & _
" AND FSN = '" & FSN & "'" & _
" AND StatusBitDescription = '" & Fehler & "'" & _
" AND Bereich = '" & Bereich & "'" & _
" GROUP BY Schicht"
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml,"tblTemp","c:\Temp\Test.xlsx",True
.
.
.
Beim ausführen kommt leider Laufzeitfehler 91.
Laufzeitfehler 91.JPG
Prüfe ob alle benötigten Variable, Objekte deklariert und ggfls.
initialisiert sind. Der Code, der das zeigen könnte ist leider
hinter dem Fehlerfenster versteckt.