Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1724to1728
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA und SQLite, Summierung

VBA und SQLite, Summierung
27.11.2019 16:23:50
Matthias
Hallo zusammen und seid gegrüßt,
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!

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA und SQLite, Summierung
27.11.2019 16:30:47
peterk
Hallo
Meine Vermutung: Dein Select liefert die Zahl mit "." als Kommatrennzeichen und "verwirrt" dadurch Excel.
Mein Tip: Definiere in Deinem Makro die Komma/Tausender Trennzeichen kurzfristig um, mach das CopyFromRecordset und setze dann wieder zurück.
AW: VBA und SQLite, Summierung
27.11.2019 16:44:29
Matthias
Hallo peterk,
Erstmal Danke für die Antwort.
mit

With Application
.DecimalSeparator = "."
.ThousandsSeparator = ","
.UseSystemSeparators = False
End With
habe ich leider keinen Erfolg.
AW: VBA und SQLite, Summierung
27.11.2019 16:53:54
peterk
Hallo
Untersuch Dein "rst" im Überwachungsfenster ob dort bereist die Kommastellen verschwunden sind bzw. welches Format dort angezeigt wird.
Anzeige
AW: VBA und SQLite, Summierung
27.11.2019 20:56:06
Luschi
Hallo Matthias,
beim Zugriff auf SQL-DB's verlasse ich mich nicht nur auf AdoDB:
- in der SQL-DB lasse ich eine Abfrage anlegen (myLuschiView)
- auf die der User Änderungsrechte hat
- in Vba wird der SQL-String definiert, wie die DB es braucht
- per ADOX schicke ich diesen String an die Abfrage und ändere damit den SQL-Inhalt der Abfrage
- mit 'Select * From myLuschiView;' wird per AdoDB der RecordSet geholt, usw.
- natürlich muß dabei der DB-Admin mitspielen!
Gruß von Luschi
aus klein-Paris

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige