Office: Excel 2010 - Pivot CommandText der Verbindung ändern

Helfe beim Thema Excel 2010 - Pivot CommandText der Verbindung ändern in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen. ich habe den in einer Verbindung hinterlegten SQL-Befehl variabel gestalten. Also so das ich in Zeile A1 einen Code eingebe und... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Helmbarte, 18. April 2012.

  1. Helmbarte Erfahrener User

    Excel 2010 - Pivot CommandText der Verbindung ändern


    Hallo zusammen.

    ich habe den in einer Verbindung hinterlegten SQL-Befehl variabel gestalten.
    Also so das ich in Zeile A1 einen Code eingebe und dieser im WHERE-Bereich hinzugefügt wird.

    Das auslesen des Commandtext klappt und auch das anpassen ist kein problem.
    Möchte ich aber nun den neuen Commandtext an die Verbindung übergeben generiert er eine neue Verbindung mit neuem namen und ordent diese der zugewiesenen pivot zu. Dadurch ist das Makro nicht weiter nutzbar, da sich der Verbindungsname geändert hat.

    Hat jemand eine Idee was ich da falsch mache?
    Der Übergabecode ist wie folgt:
    ActiveWorkbook.Connections("DATEN").ODBCConnection.CommandText = vSQL
    in vSQL ist die komplette SQL-Abfrage hinterlegt.

    Gruß und Danke
    Helmbarte
     
    Helmbarte, 18. April 2012
    #1
  2. Thomas Ramel MVP für Microsoft Excel
    Grüezi Helmbarte

    Hmmmm, das Fragment alleine kann IMO noch nicht für das Neu-Anlegen einer Verbindung verantwortlich sein.

    Wie lautet denn der komplette Code, den Du vewendest?

    Vermutlich solltest du nicht die Verbindung selbst, sondern nur den Pivot-Cache verändern.
     
    Thomas Ramel, 19. April 2012
    #2
  3. Helmbarte Erfahrener User
    Hallo Thomas.

    ja das habe ich auch zuerst gemacht (den Pivot-Cache verändern). Beziehe ich mich expliziet auf eine Pivot klappt dies auch ohne Probleme.
    Jedoch funktioniert dieses Vorgehen nur wenn die von der Pivot genutzte Verbindung alleine von Ihr verwendet wird. Ansonsten läuft er in einen Fehler beim übergeben des neuen CommandText.
    In meinem Fall ziehen sich aber 10 Pivots die Daten aus einer Verbindung. Jeweils anders gefiltert um es übersichtlicher zu haben.
    Aus diesem Grund wollte ich mich nun dirrekt auf die Verbindung beziehen und diese somit für alle Pivots zentral ändern.

    Code:
    Sub Makro3()
    
    Dim vSQL, iPos, iLen, iRLen, textRechts, vSQLnew, vSQLnewb
    
    'Auslesung des aktuellen Codes
    vSQL = ActiveWorkbook.Connections("Verbindung2").ODBCConnection.CommandText
    
    'Berechnung der Position wo sich WHERE befindet
    iPos = InStr(1, vSQL, "WHERE")  'Liefert die Stelle wo Where beginnt
    iLen = Len(vSQL)                'Ermittelt die gesamtlänge des Codes
    iRLen = iLen - iPos + 1         'Ermittelt die länge des Codes ab Where + 1 da sonst "W" nicht gezählt wird
    textRechts = Right(vSQL, iRLen)    'Zeigt den ganzen Text nach Where
    
    'Ermittelt den neuenn WHERE-Bereich
    vSQLnew = "WHERE v.code = '" & Range("a1").Value & "' "
    
    'Liefert den gesamten neuen Code indem es den WHERE-Bereich austauscht / Neu gegen Alt
    vSQLnewb = Replace(vSQL, textRechts, vSQLnew)
    
    'Überschreibt den alten Bereich mit dem neuen Bereich
    vSQL = vSQLnewb
    '#########  Bis hierhin kein Problem  ################################
    
    [COLOR=#ff0000]ActiveWorkbook.Connections("Verbindung2").ODBCConnection.CommandText = vSQL[/COLOR]
    
    End Sub
    Der Code soweit unveränder nur Anfang und Ende ausgetauscht und somit nur bezogen auf eine Pivot funktioniert:

    Code:
    vSQL = ActiveSheet.PivotTables(1).PivotCache.Sql
    .......
    ActiveSheet.PivotTables(1).PivotCache.Sql = vSQL
    Gruß,
    Helmbarte
     
    Zuletzt bearbeitet: 19. April 2012
    Helmbarte, 19. April 2012
    #3
  4. Thomas Ramel MVP für Microsoft Excel

    Excel 2010 - Pivot CommandText der Verbindung ändern

    Grüezi Helmbarte

    Hmmm, hast Du denn die Daten in einem Tabellenblatt als Datenbereich 'zwischengelagert', oder ist die Verbindung noch immer die einzige Quelle für den Pivot-Cache?

    Wenn zweites dann wird das aus denselben Gründen nicht klappen weil mehrere Pivots auf diesen Cache zugreifen.


    Importiere daher die Daten in ein Tabellenblatt und verwende diese dann als Basis für die Pivot-Tabellen.

    Dann kannst Du die Daten aktualisieren und anschliessend die Pivot-Tabellen ebenfalls.
     
    Thomas Ramel, 19. April 2012
    #4
  5. Helmbarte Erfahrener User
    Hallo Thomas,

    die Pivots greifen alle auf die gleiche Verbindung zu.
    Eine Zwischenspeicherung der Daten erfolgt nicht.
    Würde dies nicht die Geschwindigkeit einschränken und zu einer Doppelspeicherung führen (400.000Zeilen;30Spalten)?
    Gibt es keine Möglichkeit den Fehler zu umgehen?
    Ich probiere aber mal deinen Vorschlag. Danke hierfür.

    Gruß,
    Helmbarte
     
    Helmbarte, 20. April 2012
    #5
  6. Thomas Ramel MVP für Microsoft Excel
    Grüezi Helmbarte

    Das ist ein kleiner Irrtum - Pivots greifen immer auf den Pivot-Cache zu.
    In deinem Falle greifen mehrere PTs auf einen gemeinsamen Cache zu und daher lässt sich dieser nicht direkt manipulieren.

    Aus diesem Grunde bleibt nur die Ausweich-Lösung einer Abfrage welche die Daten in ein Tabellenblatt importiert und der Zugriff des Pivot-Caches dann auf diese importierten Daten. Das hat zwar eine Verdoppelung des Speicherbedarfes zur Folge (oder Du lässt die Daten der Abfrage beim Schliessen nicht speichern), ist aber meines Wissens die einzige Alternative in diesem Punkt.
     
    Thomas Ramel, 20. April 2012
    #6
Thema:

Excel 2010 - Pivot CommandText der Verbindung ändern

Die Seite wird geladen...
  1. Excel 2010 - Pivot CommandText der Verbindung ändern - Similar Threads - Excel 2010 Pivot

  2. bedingte Formatierung speichern

    in Microsoft Excel Hilfe
    bedingte Formatierung speichern: Liebe Community, Ich brauche standartmäßig eine recht komplexe bedingte Formatierung in meinen Excel-Dateien und möchte sie nicht jedes Mal neu anlegen. Ich arbeite mit Excel 2010. Libre- Office...
  3. Excel 2010 wandelt jede eingegeben zahl x in 0,x um

    in Microsoft Excel Hilfe
    Excel 2010 wandelt jede eingegeben zahl x in 0,x um: Hallo zusammen, befürchte nicht ganz neu das Thema, aber von mir nicht in den Griff zu kriegen...... Nutze 2010 prof. ==> wenn ich ein Zahl eingebe, dann wandelt Excel diese in eine Dezimalzahl...
  4. Schließen von mehreren Datein

    in Microsoft Excel Hilfe
    Schließen von mehreren Datein: Hallo Zusammen! Ich bin gerade dabei via VBA einen Code zu erstellen um beim öffnen eines Excel (MainDatei) immer ein weiteres (zweite Datei) zu öffnen. Sowie beim schließen der "MainDatei" ein...
  5. Teams-Gruppen-Call/Chat per VBA

    in Microsoft Excel Hilfe
    Teams-Gruppen-Call/Chat per VBA: Hallo VBA-Profis, aus einer XLS/VBA-Anwendung zur Verwaltung von Projektbeteiligten, will ich per Button die Kommunikation mit selektierten Kontakten starten (Call/Chat). Für einzeln selektierte...
  6. Versionskompatibilität zwischen Power Pivot-Datenmodellen in Excel 2010 und Excel 2013

    in Microsoft Excel Tutorials
    Versionskompatibilität zwischen Power Pivot-Datenmodellen in Excel 2010 und Excel 2013: Versionskompatibilität zwischen Power Pivot-Datenmodellen in Excel 2010 und Excel 2013 Excel für Microsoft 365 Excel 2019 Excel 2016 Excel 2013 Mehr......
  7. Diagramm aus Pivot mit von Hand ergänzter Spalte [Excel 2010]

    in Microsoft Excel Hilfe
    Diagramm aus Pivot mit von Hand ergänzter Spalte [Excel 2010]: Hallo Zusammen, ich habe ein Problem mit Excel, welches in LibreOffice für mich kein Problem war. Eine Tabelle mit mehreren hundert Zeilen habe ich um einige Hilfsspalten (als...
  8. Excel 2010 - Pivot zeigt negative Zeit nicht an!

    in Microsoft Excel Hilfe
    Excel 2010 - Pivot zeigt negative Zeit nicht an!: Hallo zusammen. Ich möchte mir in einer Pivot Zeiten im Format: [h]:mm:ss anzeigen lassen. Das klappt auch soweit. Jedoch werden negative Zeiten nicht angezeigt! Wie kann ich dies umgehen? Die...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden