Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1188to1192
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 per VBA ausführen

SQL-Abfragen per VBA ausführen
Joni
Hi,
ich setze mich erstmalig mit der Abfrage von Daten mittels Excel aus einer Oracledatenbank auseinander. Dazu habe ich folgende Frage. Ich habe eine Mappe mit 2 Tabellenblätter die jeweils eine Abfrage enthalten. Die Daten werden auch problemlos abgefragt. Jetzt sollte ich für beide Abfragen ein Abfragekriterium (jeweils das gleiche Kriterium) ändern. In der einen Abfrage kommt es 1 x vor (diese kann noch mit dem Assisten in Excel bearbeitet werden) in der anderen Abfrage 2 x (die ist zu komplex und muss mit MS Query bearbeitet werden). Wie schaffe ich es jetzt, dass ich beim Öffnen der Mappe gefragt werde, welches Kriterium angefragt werden soll? Die Abfragen sind auch als .dqy-File verfügbar (da kann ich das Kriterium mit suchen/ersetzen austauschen; doch das wirkt sich nicht auf die gespeicherte Abfrage in der Mappe aus).
Ich hoffe das war verständlich. Das ist für mich noch Neuland und ich muss da zuerst mal einen Überblick kriegen. Danke für eure Hilfe.
Gruß Joni

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: SQL-Abfragen per VBA ausführen
06.12.2010 19:50:47
GTFuchs
Hallo Joni,
mal ein kleines Beispiel wie per variablem SQL eine Pivottabelle gefüllt wird, ich mach sowas jetzt öfter, habe es auch erst vor kurzem gelernt. Ist kein Code den Du einfach so kopieren, einfach so als Ideenquelle, SQL irgendwie zusammenbauen und abschicken.
Sub DWH_Update_vg_FiBuSaldenliste()
Dim SQL As String
SQL = "Select * FROM vg_FiBuSaldenliste"
DWH_Update_Pivottabelle "DWH_FiBuSaldenliste", "vg_FiBuSaldenliste", SQL, " _
vg_FiBuSaldenliste"
End Sub
Function DWH_Update_Pivottabelle(Verbindungsname As String, Pivottabelle As String, SQL As  _
String, Optional Objekt As String)
' Diese Funktion aktualisiert eine Pivottabelle die sich auf das DWH bezieht
' Die Funktion prüft vorab ob das Quellobject für die Daten (Tabelle / View / Prozedur...)  _
vorhanden ist
' Die Funktion schreibt die letzten Updatedaten in den Kopfbereich der Tabelle
DWH_Parameter_setzen
'Prüfung ob die Quelltabelle Sicht für diese Pivottabelle existiert
If Not Objekt = "" Then
If Not teste_ExistenzObjekt(DWH_DB, Objekt) Then
MsgBox "Nicht erfolgreich, bitte Verbindung prüfen"
Exit Function
End If
End If
'Pivotverbindung aktualisieren und SQL Befehl übergeben - erst ab Excel 2007
'aktualisiere_DBVerbindung Verbindungsname, DWH_DB, SQL
'Pivotverbindung aktualisieren und SQL Befehl übergeben - funktionert ab Excel 2003
aktualisiere_Pivotverbindung Pivottabelle, DWH_DB, SQL
ActiveSheet.PivotTables(Pivottabelle).RefreshTable
'Persistentzkennzeichen setzen
If DWH_DB.Cache Then
ActiveSheet.PivotTables(Pivottabelle).SaveData = True
ActiveSheet.PivotTables(Pivottabelle).PivotCache.MissingItemsLimit = xlMissingItemsMax
Else
ActiveSheet.PivotTables(Pivottabelle).SaveData = False
ActiveSheet.PivotTables(Pivottabelle).PivotCache.MissingItemsLimit = xlMissingItemsNone
End If
ActiveWorkbook.ShowPivotTableFieldList = False
'Updateinfos setzen
DBSet_UpdateInfo_Server DWH_DB.Server, DWH_DB.DB
End Function
Sub aktualisiere_Pivotverbindung(Verbindungsname As String, DB As DB, SQL)
'Diese Funktion stellt die Kompatibiltät mit Excel 2003 sicher, ab 2007 reicht die Prozedur  _
aktualisiere_DBVerbindung
Dim pt As PivotTable
Set pt = ActiveWorkbook.ActiveSheet.PivotTables(Verbindungsname)
With pt.PivotCache
.CommandText = SQL
.CommandType = xlCmdSql
.Connection = "OLEDB;Provider=SQLOLEDB.1" _
& DB.Security _
& ";Persist Security Info=True" _
& ";Initial Catalog=" & DB.DB _
& ";Data Source =" & DB.Server _
& ";Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4099;Use Encryption for  _
Data=False" _
& ";Tag with column collation when possible=False"
.RefreshOnFileOpen = False
.SavePassword = False
.BackgroundQuery = False
End With
End Sub

Anzeige

133 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige