News

FAQ Access – Stored Procedures

Category:

Access, FAQ

0

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.

SQL String

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.

Stored Predure

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

Den Namen der gespeicherten Procedur tragen wir hinter das Create Procedure ein
In unserem Beispiel sind zwei Datumsangaben als Selektionskriterium enthalten. Dieses Von und Bis Datum definieren wir als Übergabevariable vom Typ Datum und ersetzen in der SELECT Anweisung die festen Datumsangaben durch die beiden neuen Variablen.

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

 

 

Tags: ,

Leave a Reply

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.