Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Aktualisierung bestehender Verbindung

Forumthread: Aktualisierung bestehender Verbindung

Aktualisierung bestehender Verbindung
22.06.2020 18:44:31
Marko
Hallo zusammen,
ich möchte per VBA eine bestehende Datenverbindung zu einer (My-)SQL-Datenbank aktualisieren und dabei per VBA insbes. die SQL-Abfrage ändern. Ziel ist, nur die jeweils gerade relevanten Daten (für meine darauf aufbauenden Pivottabellen) aus SQL in den Excel-Cache zu ziehen, und eben nicht alle Daten (mehr als 100 Gb), wie mein Excel dies standardmäßig tut.
Per Macrorecorder erhält man folgendes:
With ActiveWorkbook.Connections("Meine_SQL_Abfrage").ODBCConnection
.BackgroundQuery = False
.CommandText = Array("Select ... from ... where ... ab hier dynamisch via VBA zu befüllen")
.CommandType = xlCmdSql
.Connection = Verbindungsdaten zu meiner SQL-Datenbank
.RefreshOnFileOpen = False
.SavePassword = True
.SourceConnectionFile = ""
.ServerCredentialsMethod = xlCredentialsMethodIntegrated
.AlwaysUseConnectionFile = False
End With
With ActiveWorkbook.Connections("Meine_SQL_Abfrage")
.Name = "Meine_SQL_Abfrage"
.Description = "Datenabfrage"
End With
ActiveWorkbook.Connections("Meine_SQL_Abfrage").Refresh
Sieht für mich eigentlich vernünftig aus, aber leider aktualisiert dieses Macro beim Ausführen nicht die existierende Abfrage ("Meine_SQL_Abfrage"), sondern erzeugt bei jedem Ausführen stets eine neue Abfrage, die jeweils nur "Verbindung" (in einem deutschen Excel) heißt. Alle Pivots nutzen dann diese neue Abfrage, statt die alte.
Was mache ich falsch? Natürlich könnte ich versuchen, im Nachgang die alte Verbindung zu löschen und die neue umzubenennen, aber erstens muss ich dann ermitteln, wie die neue "Verbindung" in anderen Sprachen heißt und zweitens fühlt sich das nicht sonderlich elegant an.
Powerpivot unterstützt meine IT übrigens nicht.
Vielen Dank für einen Tipp,
Marko
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Aktualisierung bestehender Verbindung
23.06.2020 06:51:51
Luschi
Hallo Marko,
nach meinem Wissen arbeitet ein SQL-Server so:
- Abfrage entgegen nehmen
- auf dem Server die Abfrage ausführen und
- nur die Ergebnismenge zurückschicken
Die Optimierung der Abfragen muß auf dem MySQL-Server erfolgen und kann nicht von außen erfolgen; siehe hier:
https://www.pc-erfahrung.de/sonstiges/webdesignwebentwicklung/mysql-abfragen-optimieren-und-slow-query-auffinden.html
Der Pivot-Cache ist eine Kopie -Daten Tabellendaten, die in der Pivot-Tabelle verarbeitet werden, da hinein kann man nichts reinschreiben/-kopieren.
Gruß von Luschi
aus klein-Paris
Anzeige
;
Anzeige

Infobox / Tutorial

Aktualisierung bestehender Datenverbindungen in Excel


Schritt-für-Schritt-Anleitung

Um eine bestehende Verbindung in Excel zu aktualisieren, kannst du die folgenden Schritte befolgen:

  1. Öffne den Visual Basic for Applications (VBA) Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf "VBAProject" und wähle "Einfügen" > "Modul".
  3. Gib den folgenden VBA-Code ein:

    Sub Aktualisiere_SQL_Verbindung()
       With ActiveWorkbook.Connections("Meine_SQL_Abfrage").ODBCConnection
           .BackgroundQuery = False
           .CommandText = Array("Select ... from ... where ...") ' Hier anpassen
           .CommandType = xlCmdSql
           .Connection = "Verbindungsdaten zu meiner SQL-Datenbank" ' Hier anpassen
           .RefreshOnFileOpen = False
           .SavePassword = True
           .SourceConnectionFile = ""
           .ServerCredentialsMethod = xlCredentialsMethodIntegrated
           .AlwaysUseConnectionFile = False
       End With
       ActiveWorkbook.Connections("Meine_SQL_Abfrage").Refresh
    End Sub
  4. Ändere die SQL-Abfrage:

    • Achte darauf, die .CommandText-Zeile mit deiner spezifischen SQL-Abfrage zu befüllen.
  5. Führe das Macro aus:

    • Klicke auf Run oder drücke F5, um das Macro auszuführen.

Häufige Fehler und Lösungen

  • Fehler: Neue Abfrage wird erstellt:

    • Wenn bei der Ausführung des Macros eine neue Abfrage mit dem Namen "Verbindung" erstellt wird, überprüfe, ob der Name der Verbindung korrekt ist. Achte darauf, dass der Verbindungsname im Code exakt mit dem in Excel übereinstimmt.
  • Lösung: Verbindung umbenennen:

    • Statt die neue Verbindung zu löschen, kannst du im Code die existierende Abfrage direkt ansprechen, um das Problem zu vermeiden.

Alternative Methoden

Wenn VBA für deine Anforderungen zu komplex ist, kannst du auch folgende Methoden in Betracht ziehen:

  • Power Query:

    • Nutze Power Query, um die Datenverbindung visuell zu erstellen und zu aktualisieren. Dies ist besonders nützlich, wenn du keine tiefen VBA-Kenntnisse hast.
  • Manuelle Aktualisierung:

    • Klicke auf die Datenverbindung in Excel und wähle "Aktualisieren", um die Verbindung manuell zu aktualisieren.

Praktische Beispiele

Hier ist ein einfaches Beispiel für eine SQL-Abfrage:

.CommandText = Array("SELECT * FROM Kunden WHERE Land = 'Deutschland'")

Diese Abfrage zieht nur die Daten von Kunden aus Deutschland, was die Datenmenge erheblich reduzieren kann, insbesondere wenn deine Datenbank sehr groß ist.


Tipps für Profis

  • Verwende Parameter in SQL-Abfragen:

    • Um dynamische Abfragen zu erstellen, kannst du Parameter in deinen SQL-Statements verwenden. Dies reduziert die Notwendigkeit, den Code häufig anzupassen.
  • Optimierung auf SQL-Server-Ebene:

    • Stelle sicher, dass die SQL-Abfragen auf dem Server optimiert sind. Überlege, Indizes zu verwenden oder die Abfragen zu analysieren, um die Performance zu verbessern.

FAQ: Häufige Fragen

1. Warum wird eine neue Abfrage erstellt? Es könnte sein, dass der Name der Verbindung im Code nicht mit dem Namen in Excel übereinstimmt. Überprüfe dies.

2. Wie kann ich die Datenverbindung ohne VBA aktualisieren? Du kannst die Verbindung manuell aktualisieren, indem du im Datenbereich auf "Aktualisieren" klickst.

3. Ist Power Query eine gute Alternative zu VBA? Ja, Power Query ist eine benutzerfreundliche Methode, um Daten zu importieren und zu transformieren, ohne VBA-Programmierung.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige