Hallo
Ich fange gerade erst an, mit SQL Abfragen, daher schon im Vorfeld, SORRY für dumme Fragen.
Ich habe eine Datenbank aufgebaut, wo es eine Spalte gibt, die "Fertigstellung" heißt.
Dort ist ein Datum und eine Uhrzeit drin.
Nun möchte ich die Zahl der Einträge innerhalb einer Stunde zählen.
Sql = "select count(*) " & _
"FROM " & Tabelle & " " & _
"WHERE Fertigstellung >= ' " & Beginnzeit & "' " & _
"AND Fertigstellung < ' " & Endzeit & "' "
Tabelle = "FTS_Transporte"
Beginnzeit = Format(date, "dd.mm.yy hh:mm:ss")
Endzeit = CDate(Beginnzeit) + 1 / 24
Das klappt aber nicht.
Auch dieser Versuch scheiterte:
Sql = "select count(*) " & _
"FROM " & Tabelle & " " & _
"WHERE Fertigstellung BETWEEN 'Beginnzeit' AND 'Endzeit'"
Kann mir jemand helfen?
Gruß
Karsten
Hallo,
(gültig für Access, evtl. ist die Datum/Uhrzeit-Formatierung an MySQL anzupassen.)
Dim strTabelle as String, strSQL as String
Dim datBeginnzeit as Date
Dim datEndzeit as Date
strTabelle = "FTS_Transporte"
datBeginnzeit = Format(Now(), "\#yyyy-mm-dd hh:nn:ss\#")
datEndzeit = Format(Dateadd("h",1,Now()), "\#yyyy-mm-dd hh:nn:ss\#")
strSql = "select count(*) FROM " & strTabelle & _
" WHERE Fertigstellung BETWEEN " & datBeginnzeit & " AND " & datEndzeit
Debug.Print strSQL
Hallo,
erst mal vielen Dank für die Antwort.
Leider kommen Fehler.
datBeginnzeit = Format(Now(), "\#yyyy-mm-dd hh:nn:ss\#")
und
datEndzeit = Format(Dateadd("h",1,Now()), "\#yyyy-mm-dd hh:nn:ss\#")
führen zum Fehler:
Typen unverträglich.
Wenn ich die \# entferne geht es.
Aber dann führt
Set rs = cn.Execute(strSQL) zu folgendem Fehler:
Syntaxfehler (fehlender Operator)
Gruß
Karsten
Hallo,
datBeginnzeit und datEndzeit müssen als String deklariert werden.
ZitatSet rs = cn.Execute(strSQL)
Execute ist die falsche Methode.
Set rs = cn.OpenRecordset(strSQL, dbopenSnapshot)
With rs
....
End WithGruß Andreas
Moin,
egal ob als Date oder String, folgender Fehler kommt:
"Arguments are the wrong type, are out of acceptable range, or are in conflict with one another."
Poste bitte deinen Code und nicht die Fehlermeldung!
Gruß Andreas
Hi
ich habe es jetzt so gelöst, dass ich eine neue Spalte in der Datenbank gemacht habe, wo ich die Stunde eintrage.
Damit kann ich das "Problem" jetzt ganz einfach lösen, indem ich Datum und Stunde separat abfrage.
Gruß
Karsten
Hallo Karsten,
Und diese Zeile von Franz hast du nicht mal ausprobiert?
Debug.Print strSQL
Dies schreibt dir den geparsten String ins Direktfenster (VBE -> Strg-G). Dort
kommt man den Syntaxfehlern am schnellsten auf die Spur.
gruss ekkehard
P.S. Für kompliziertere Abfrage, vor allem mit solchen mit mehreren Variablen,
Formularbezügen bzw. Parametern hilft dieses Tool bei der Analyse ungemein:
http://access-codelib.net/download/addins/SqlDebugPrint.zip (http://access-codelib.net/download/addins/SqlDebugPrint.zip)
Ich gebe zu, dass ich das als Signatur gehalten habe. ::)
Oder der Einfachheit halber so:
strSql = "SELECT COUNT(*) FROM " & strTabelle & _
" WHERE Fertigstellung BETWEEN Now() AND DateAdd('h', 1, Now())"
VBA-Funktionen ohne äußere Argumente kann man direkt in den SQL-String übernehmen und spart sich den Formatierungskram, an dem sich so viele so gerne aufreiben.
Eine echte Alternative wäre eine echte Parameterabfrage.