Thema Datum  Von Nutzer Rating
Antwort
Rot Erstellen einer Pivot-Tabelle mit DB-Quelle
19.03.2014 11:46:37 Tobias
NotSolved

Ansicht des Beitrags:
Von:
Tobias
Datum:
19.03.2014 11:46:37
Views:
1141
Rating: Antwort:
  Ja
Thema:
Erstellen einer Pivot-Tabelle mit DB-Quelle

Hallo zusammen,

ich bin ein VBA-Newbie und beschäftige mich seid einigen Tagen mit der Sache. Generell wollen wir Berichte mit einer variablen Zahl von Pivot-Tabellen in Excel erstellen, deren Datenquellen auf einem MS SQL-Server liegen.

Dafür habe ich eine Subroutine erstellt, die eine einzelne Pivot-Tabelle zu einem Projekt erstellen soll, dessen Namen übergeben wird:

Private Sub BuildTable(project As String)
    Dim dateStart As String
    Dim dateEnd As String
    Dim sqlQuery As String
    Dim pt As PivotTable
    Dim tmpConn(0 To 1) As String
    
    tmpConn(0) = "Driver={SQL Server};Server=MyServer;Database=My_Database;UID=MyUser;Pwd=MyPwd"
    tmpConn(1) = "USE [My_Database] EXEC dbo.Get_MyData '" & dateStart & "', '" & dateEnd & "', '" & project & "'"
        
    dateStart = Format(dt1.Value, "yyyymmdd")
    dateEnd = Format(dt2.Value, "yyyymmdd")
    Set pt = ActiveWorkbook.PivotCaches.Add(SourceType:=xlExternal, SourceData:=tmpConn).CreatePivotTable(TableDestination:=ActiveWorkbook.Worksheets(1).Range("A7"))
...
Hier kommt noch mehr Code
...
End Sub
Debugge ich diese Routine nun schrittweise, so bekomme ich bei der Zeile "Set pt = ..." die Fehlermeldung "Laufzeitfehler 1004: Anwendungs- oder objektorientierter Fehler".
 
Die Routine wird von einer anderen Rotuine aus demselben Modul aufgerufen. Die Variablen "project", "dateStart" und "dateEnd" werden auch korrekt übergeben bzw. korrekt ausgelesen (habe ich mit MsgBox überprüft). Der SQL-EXEC Befehl funktioniert auch korrekt, wenn ich ihn auf der Datenbank selber ausführe.
 
Generell scheine ich irgendwie Verständnisprobleme mit diesen DB-Connections zu haben. Ich weiß dann nie, ob ich ODBC / ADODB oder was auch immer verwenden soll (bei MS SQL wäre es ja wahrscheinlich ADODB) und v.a. wie ich es benutze. Den obigen Connection-String habe ich z.B. aus Excel kopiert, nachdem ich mit dem SQL-Query-Wizard eine erfolgreiche Verbindung zur DB aufgebaut habe.
 
Am liebsten wäre mir sogar, wenn ich beim öffnen des Workbooks eine Verbindung aufbauen und dann auch ein Passwort eingeben muss, da ich das ungern im Code speichern würde. Aber diese Verbindung muss dann ja irgendwann auch wieder geschlossen werden, oder? Vielleicht habt ihr ja ein paar Tipps, wie man das machen könnte und was ich dabei beachten muss (v.a. beim Fehlerhandling).
 
Viele Grüße
Tobias
 

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Erstellen einer Pivot-Tabelle mit DB-Quelle
19.03.2014 11:46:37 Tobias
NotSolved