VBA und SQLite, Summierung
27.11.2019 16:23:50
Matthias
Mal wieder habe ich ein kniffliges Problem... zu 99% hab ichs gelöst, jetzt steht der Import von SQLite nach Excel über VBA an. Connection steht, Werte kommen... Jedoch nicht wie gewollt.
Hier der Connection Code:
Dim conn As Object, rst As Object
Dim strSQL As String
Set conn = CreateObject("ADODB.Connection")
Set rst = CreateObject("ADODB.Recordset")
Dim strDatei As String
Dim strPfad As String
strPfad = Environ$("USERPROFILE") & "\Desktop\"
strDatei = strPfad & "novatime.s3db"
conn.Open "DRIVER=SQLite3 ODBC Driver;Database=" & strDatei & ""
strSQL = "SELECT * "
rst.Open strSQL, conn, 1, 1
Sheets("Tabelle1").Range("A1").CopyFromRecordset rst
rst.Close
Set rst = Nothing: Set conn = Nothing
Und hier der SELECT: SELECT PersNr, Name, DATUM,
ROUND(SUM( CASE
WHEN substr(IstStd,1,1) IN ('-') AND substr(IstStd,3,1) IN (',', '.') THEN ((substr(IstStd,4, _
2))/60) * '-1' + (substr(IstStd,2,2))
WHEN substr(IstStd,3,1) IN (',', '.') THEN (substr(IstStd,4,2))/60 + (substr(IstStd,1,2))
ELSE (substr(IstStd,3,2))/60 + (substr(IstStd,1,2)) END ),2) AS IstStd
FROM ARCHIV_JOURNAL WHERE PersNr ='3234' AND Datum BETWEEN '2019-08-01' AND '2019-08-31' ORDER BY Datum
Im Abfragemanager (SQLite Administrator) klappt die Abfrage wunderbar, hau ich diese in VBA rein, nimmt der alle Zahlen als INT, und summiert dann quasi nur die INTs. Nachkommastellen fehlen, und die Summe ist ergo nicht korrekt.
Hintergrund zu dem SQL-Code: Zeiterfassungsdatenbank, total beknackt in meinen Augen. Arbeitet jemand 7h 30m, werden "7,3" in die DB geschrieben. Mit den substr's splitte ich die nachkommastellen, rechne diese in Industrieminuten um, füge sie mit den Stunden wieder zusammen. Mit dem Case fange ich sachen ab, wie: negative stunden, zweistellige zeiten (10h+). Wie gesagt, die Abfrage funktioniert super, nur eben per VBA nicht.
Was habe ich nicht bedacht?
Über jede Hilfe bin ich sehr Dankbar!
Vielen Dank im Voraus und einen schönen Tag euch!