Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1800to1804
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

SQL Abfragen aus Access DB in VBA/Excel

SQL Abfragen aus Access DB in VBA/Excel
22.12.2020 17:38:55
Kathrin
Hallo zusammen,
ich hänge gerade an einer bestimmten Stelle in meinem Code und komme nicht mehr weiter. Und zwar hab ich eine Access angebunden und will da bestimmte Auswertungen machen (deskriptiv vor allem usw). Jetzt will ich z.B. eine bestimmte Kennzahl auswerten und zieh mir dazu zwei bestimmte Werte aus mittels SQL Abfrage aus der DB und will diese dann entsprechend weiterverarbeiten, also in einer Formel verrechnen. Ich kenn meine Ergebnisse bei den SQL Abfragen und die sind beide nicht NULL. Allerdings gibt mir Excel lokal meine Variablen als NULL an und ich kann sie deshalb nicht weiter verrechnen. Sieht jemand einen Fehler?

Private Sub AOV()
Dim conn As New ADODB.Connection
Dim recset1 As New ADODB.Recordset
Dim recset2 As New ADODB.Recordset
Dim strDB As String
Dim fldCount As Integer
Dim recCount As Long
Dim AOV As Long
' Set the string to the path of your database
DBPATH = "C:\Users\Kathrin\Desktop\ba-scm_projekt\bike_sales.accdb"
'This is the connection provider. Remember this for your interview.
PRVD = "Microsoft.ace.OLEDB.12.0;"
'This is the connection string that you will require when opening the the connection.
connString = "Provider=" & PRVD & "Data Source=" & DBPATH
'opening the connection
conn.Open connString
'Read the dates provided by user
Dim startdate As String, enddate As String
Dim sday As Integer, smonth As Integer, syear As Integer
Dim eday As Integer, emonth As Integer, eyear As Integer
sday = Range("B5").Value
smonth = Range("C5").Value
syear = Range("D5").Value
eday = Range("B6").Value
emonth = Range("C6").Value
eyear = Range("D6").Value
startdate = syear & "_" & smonth & "_" & sday
enddate = eyear & "_" & emonth & "_" & eday
' Open recordset
recset1.Open "Select sum(profit) From Purchase_Orders where datum between 'startdate' and '   _
_
_
_
_
enddate'", conn
' Set active Worksheet
Worksheets("Average Order Value").Activate
' Copy sum of profit into worksheet
ActiveSheet.Cells(17, 7).CopyFromRecordset recset1
' Open recordset
recset2.Open "SELECT Count(*) FROM Purchase_Orders WHERE (Datum Between 'startdate' And ' _
enddate')", conn
' Copy count of purchase orders into worksheet
ActiveSheet.Cells(18, 7).CopyFromRecordset recset2
' Calculate AOV
AOV = Cells(17, 7).Value / Cells(18, 7).Value
Cells(18, 2).Value = AOV
' Close ADO objects
rst.Close
conn.Close
Set rst = Nothing
Set conn = Nothing
Set ActiveSheet = Nothing
End Sub


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

Betreff
Datum
Anwender
Anzeige
AW: SQL Abfragen aus Access DB in VBA/Excel
22.12.2020 18:07:42
Yal
Hallo Kathrin,
Frage: Warum rechnest Du nicht direkt diese Wert über SQL?:
Select sum(profit) as profit, Count(*) as Anzahl, sum(profit) / Count(*) as Profit_pro_Bestellung
From Purchase_Orders
where datum between 'startdate' and 'enddate'
(kommt eh aus dieselbe Tabelle)
Ansonsten bekommst Du inzwischen (Excel 2016) Daten aus Access am Besten mit Power Query.
Reiter "Daten", Gruppe "Extern Daten abrufen", "Aus Access". Die abgezogene Daten kannst du im POwer Query Editor weiterverarbeiten. Aber wenn schon dahinter Access, würde ich so viel wie möglich bereit in Access machen.
Power Query Start: youtube Videos von Power Hero. Gut investierte 40 Min.
Aber die eigentliche Antwort zu deiner Frage: es liegt an der Einbindung der Variablen startdate und enddate in der SQL Abfragestring:
recset1.Open "Select sum(profit) " & _
"From Purchase_Orders " & _
"where datum between '" & startdate & "' and '" & enddate & "'", conn
recset2.Open "Select count(*) " & _
"From Purchase_Orders " & _
"where datum between '" & startdate & "' and '" & enddate & "'", conn
Viel Erfolg
Yal
Anzeige
AW: SQL Abfragen aus Access DB in VBA/Excel
23.12.2020 10:01:59
Kathrin
Hi Yal,
jetzt wo du es sagst, klingt es natürich sinnvoll es in Access zu berechnen und die SQL Query einzubinden. Lieben Dank für Deine Hilfe und frohe Weihnachten!! :-)
AW: SQL Abfragen aus Access DB in VBA/Excel
23.12.2020 12:01:40
Luschi
Hallo Kathrin,
der Vorschlag von Yal klingt gut, ist aber schlecht gemacht, denn:
- Access schickt trotz SQL alle Daten
- des SQL-Befehls an Excel
- ohne den Filter (Where …) auszuwerten
- und erst Excel setzt dem Filter drauf
- das ist nicht besonders vorteilhaft
- auch wenn das Ergebnis stimmt
- denn Access ist keine Server-Anwendung
- um effizient zu sein
- hilft nur ADODB in Verbindung mit ADOX
Gruß von Luschi
aus klein-Paris
Anzeige
AW: SQL Abfragen aus Access DB in VBA/Excel
23.12.2020 14:17:37
Yal
Äääh?
Luschi: Du hast vollkommen Recht. Aber...
"Access ist kein Server-Anwendung"
und genau daher: dass es von Access oder Excel ausgewertet wird, ist in den Fall gleich (bei Server-Anwendung gebe ich dir wiederum Recht).
Es ist ein full aggregat SQL: alles in Sum oder Count, ein where ist nicht erwünscht.
Ich gehe hier nicht davon aus, dass es sich um den Konzern-Datawarehouse mit Milliarden an Datensätze handelt. Die Performance Optimierung macht man, nach dem man einer erste funktionierende Ergebnis hat. Aber es ist nur meine Meinung.
VG
Yal

144 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige