FAQ Access – Stored Procedures
Access Abfragen – Stored Procedures
Der Original Artikel befindet sich auf der Seite des Minhorst Verlages, die Zeitschrift kann ich nur allen empfehlen die mit Access arbeiten
„https://access-im-unternehmen.de/SQL_Server_Von_der_Abfrage_zur_Stored_Procedure/“
Dieses Beispiel hier ist nur eine kürze Variante, abgepasst für meine Zwecke.
Problem
Komplexe Abfragen dauern im Access meist sehr lange, erst recht, wenn wir Informationen per VBA selektieren. Das liegt daran, das der Server alle Daten an das Access übermittelt und der PC die Auswertung übernimmt.
Wenn wir einen SQL Server im Hintergrund haben, können wir mit einer gespeicherten Procedure arbeiten. Die Daten werden dann vom SQL Server ermittelt und nur die selektierten Daten werden an das Access übertragen
Lösung
Erstellen einer Musterabfrage
Wir erstellen eine Abfrage mit den benötigten Kriterien und kopieren des SQL String in die Zwischenablage.
Anlegen der Stored Procedure
Auf dem SQL Server legen wir nun die Stored Procedur an, in dem wir im Kontextmenü den entsprechenen Punkt auswählen.
Im Ergebnis bekommen wir ein Muster zum Anlegen der gespeicherten Procedur. Das ist der Code zum Anlagen, die Procedur an sich bekommen wir nie zu sehen.
Anpassen der Stored Procedure
Im nächsten Schritt werfen wir die grünen Kommentare raus und entfernen den Beispielcode
Nun fügen wir den SQL String aus dem Access zwischen das BEGINN und das END in die gespeicherte Procedur
Erstellen der Gespeicherten Procedur
Zum Erstellen der Procedur nutzen wir die Taste F5 oder den Button Ausführen, in der Folge ist die Gespeicherte Procedur in der Liste enthalten
Verändern der gespeicherten Procedur
Um die gespeicherte Procedur zu ändern müssen wir aus dem CREATE PROCEDUR ein ALTER PROCEDUR machen
Intelli Sence Cache Aktualisieren
Im Screenshot kann man sehen, das der Name ESMLISTE als Fehler bemängelt wird, hier ist der SQl Server etwas langsam.
Dann ist möglicherweise der IntelliSense-Cache noch nicht aktualisiert. Das können wir auf zwei Arten nachholen:
- Tastenkombination Strg + Umschalt + R drücken
- Menübefehl Bearbeiten|IntelliSense|Lokalen Cache aktualisieren betätigen
Die gespeicherte Procedure von Access aus nutzen
Wir erzeugen nun im Access eine neue Abfrge und nehmen den Abfragetyp Pass-Through
Dem Befehl EXEC folgt der Name der gespeicherten Procedur und die Übergabe der vereinbarten Parameter, dem Von und dem Bis Datum
Nun müssen wir noch die ODBC Verbindung der Abfrage in die Eigenschaften der Abfrage eintragen. Die können wir aus einer eingebundenen Tabelle kopieren und werfen am Ende den Hinweis auf die Tabelle raus.
Nun können wir die Abfrage öffnen und als Datensatzquelle in ein Formular packen
Anpassen der Übergabevariablen
Im SQL der Abfrage steht nun bei den Übergabevariablen ein festes Datum drin. Mittels einer kleinen, hier nur schematisch dargestellten Sub passen wir den SQL String und die ODBC Daten der Abfrage an und öffnen das Formular.
Natürlich würden wir in der Praxis die beiden Datumsangaben per Übergabevariable nutzen und den ODBC Krams in eine GLOBAL CONST laden