none
Absturz von Excel beim laden von vielen Daten

    Frage

  • 
    

    Sehr geehrte Damen und Herren,

    wir haben mittels "OLE DB-Abfrage" in den Arbeitsmappenverbindungen mehrere Verbindungen zwischen Tabellen und Pivot-Tabellen zu einer Datenbank eingerichtet. Mittlerweile sind die Datenmengen so groß, dass Excel beim Laden der Daten über 3,5GB RAM benötigt und damit abstürzt. Ich möchte nicht auf eine 64Bit Version zurückgreifen, sondern einfach die Datenmenge beschränken.

    Meine Lösungsidee wäre, dass man in der OLE DB-Abfrage eine WHERE Bedingung integriert und eine Variable hinterlegt.

    Select * from daten where Datum > (variable)

    Diese Variable wiederum soll aus einem Feld in der Excel-Tabelle gefüllt werden. Sprich man gibt irgendwo im Excel File vor, wie weit zurück Daten von der Datenbank geladen werden sollen. Damit ist die Menge der Daten beschränkt und der Absturz verhindert.

    Die Frage ist also, wie man so etwas in Excel integriert

    mit freundlichen Grüßen

    Michael Schäfer

    <o:p></o:p>
    Mittwoch, 7. November 2018 14:24

Alle Antworten

  • Ganz einfach:

    select .... where Feldname > ?

    beim Ausführen der Abfrage erscheint nun eine Eingabe-Frage.
    Zum Testen kann man hier einen Wert eingeben, der nur eine kleine Datenmenge zurückgibt.

    Nach dem die Daten nun in Excel gelandet sind, kann man die Datenabfrage über die Eigenschaften bearbeiten.
    Hier tauchen nun "Parameter" auf. Diese lassen sich dann einzelnen Zellen zuordnen.

    Wichtig ist dann, dass je nach Typ des Parameters der Zellwert korrekt erfasst werden muss.

    Unter Umständen, je nach Datenquelle kann man Parameter auch benennen:

    select .... where Feldname > [Name des Parameters]

    Allerdings werden die Klammern nicht immer unterstützt.

    Achtung:
    Wenn die Abfrage bearbeitet wird, müssen die Zellzuordnungen leider erneuert werden. Diese vergisst Excel leider immer.


    • Bearbeitet bfuerchau Mittwoch, 7. November 2018 17:13
    Mittwoch, 7. November 2018 17:13
  • Hallo und vielen Dank für den Tipp.

    Bei mir erscheint leider keine Eingabe-Frage. Ich erhalte beim hinzufügen des Fragezeichens in die Abfrage und anschließendem Bestätigen eine Fehlermeldung. Diese bleibt auch bestehen, wenn ich anschließend die Daten aktualisieren möchte. 

    alter Befehlstext: select * from "rpt_lms_reporting"

    Neuer Befehlstext: select * from "rpt_lms_reporting" WHERE zeitpunkt_auftragsanlage >= DATEADD(mm,DATEDIFF(mm,0,GETDATE())?,0)

    -- Wenn man im Managementstudio das Fragenzeichen ersetzt mit z.B. -1 führt dazu, dass der erste des letzten Monats als Startdatum selektiert wird.

    Beim bestätigen des neuen Befehlstextes erscheint folgende Fehlermeldung:

    "Für mindestens einen erforderlichen Parameter wurde kein Wert angegeben"


    • Bearbeitet M.Schaefer Donnerstag, 8. November 2018 07:03 Tippfehler
    Donnerstag, 8. November 2018 07:03
  • Management Studio zeigt die Eingabe nicht an sondern Excel bei der Ausführung der Abfrage.

    Donnerstag, 8. November 2018 07:10
  • Wie beschrieben, es kommt kein Eingabefeld, sondern eine Fehlermeldung.

    "Für mindestens einen erforderlichen Parameter wurde kein Wert angegeben"

    Ich habe die Meldung mal gegoogelt und es kommt ein Hinweis auf den Button "Parameter", dieser ist aber dauerhaft ausgegraut und kann nicht angeklickt werden.

    Donnerstag, 8. November 2018 09:40
  • Du hast ja auch keinen korrekten Parameter in deinem SQL:

    DATEADD(mm,DATEDIFF(mm,0,GETDATE())?,0)

    Ein Parameter steht absolut für sich alleine. Es hätte da eher ein Syntaxfehler gemeldet werden müssen.
    Was soll das "?" also direkt hinter der Klammer?

    Freitag, 9. November 2018 08:27