PDA

Vollständige Version anzeigen : Externe Daten: "Alle aktualisieren" liefert falsche Werte


seb23
15.02.2006, 16:03
Hallo zusammen,

ich habe ein sehr merkwürdiges Problem.
Und zwar ein Excel-Tabellenblatt, das über insgesamt 9 Abfragen externe Daten (MSSQL Server 7) einbindet. Führe ich für das Tabellenblatt den Befehl "Alle aktualisieren" über das entsprechende Symbol aus, werden zu 6 der 9 Abfragen falsche Werte zurückgeliefert. Aktualisiere ich die Abfragen einzeln über das Symbol "Daten aktualisieren", stimmen die Werte.

Das Problem tritt sowohl unter Office 97, als auch unter Office 2003 SP1 auf (andere Versionen habe ich bisher nicht getestet).

Hat jemand eine Idee, woran das liegen könnte?

Danke schonmal und viele Grüße,
Sebastian

jinx
15.02.2006, 19:47
<font size="2" face="Century Gothic">Moin, Sebastian,

bei Verwendung von VBA sollte eigentlich der Befehl ThisWorkbook.RefreshAll helfen, der alle externen Datenbereiche und Pivot-Tabellen der Arbeitsmappe aktualisiert.</font>

seb23
16.02.2006, 09:59
Hallo jinx,

danke für Deine Antwort. Ich habe mir nun einen CommandButton in mein Tabellenblatt eingebaut, für das beim Klicken der RefreshAll-Befehl ausgeführt wird. Leider liefert das Ganze die gleichen falschen Werte, wie die Betätigung des Symbols "Alle aktualsieren".

Was mir dabei aber aufgefallen ist: Die Daten werden (in beiden Varianten, also mit selbstgestrickter Befehlsschaltfläche und über das Symbol) "mehrmals" aktualisiert, d.h. die angezeigten Werte zu der Abfrage werden mehrfach verändert. Das hieße ja, der Server würde mehrmals (unterschiedliche) Daten zurückliefern?! Das erscheint mir alles sehr ungewöhnlich...

Hat jemand noch eine Idee dazu?

Danke + Gruß,
Sebastian

P.S.: Wie gesagt, das Backend ist eine MSSQL Server 7-Datenbank. Der Zugriff erfolgt jeweils per ODBC über eine Benutzer-DSN. Treiber-Version: 2000.85.1117.00 (WS: Windows XP SP2 mit Office 2003 SP1).

miragesmk
16.02.2006, 10:10
Hallo seb,

du sagtest deine einzelnen Abfragen liefern die richtigen Werte. Probier doch einfach mal die Querys einzeln per VBA zu aktualisieren:

in etwa so:

With Sheets("Ausgangsdaten")
.Range("A3").QueryTable.Refresh BackgroundQuery:=False 'Startzelle der 1. Abfrage
.Range("D3").QueryTable.Refresh BackgroundQuery:=False
.Range("G3").QueryTable.Refresh BackgroundQuery:=False
.Range("J3").QueryTable.Refresh BackgroundQuery:=False
End With

Gruß

seb23
16.02.2006, 12:14
Hallo Mirage,

danke für den Tipp! Tatsächlich werden nun die korrekten Werte zurückgeliefert.
Der Code muss bei Wiederverwendung allerdings jeweils angepasst werden (Blattname, Zellnummern), was bei einem Dokument mit vielen externen Abfragen schonmal in Arbeit ausarten kann...

Dass die Einzel-Aktualsierung über VBA funktioniert, ändert aber nichts daran, dass die Funktionalität "Alle aktualisieren" nicht korrekt arbeitet. Vielleicht hat ja doch noch jemand eine Idee, was die Ursache dafür sein könnte?

Danke + Gruß,
Sebastian