Posts tagged: Gespeicherte Prozeduren

Tips & Tricks zu Gespeicherte Prozeduren in Access

By , 9. April 2011

Im zweiten Artikel in dieser Serien ging es darum wie man Gespeicherte Prozeduren in Access aufrufen kann, welche Parameter wie übergeben werden, und wie man gleichartige Gespeicherte Prozeduren mit einem universellen VBA-Prozedur aufruft. In diesem dritten und vorerst letzten Teil geht es nur noch um Feinheiten und Vereinfachungen.

Beispielsweise kann man für Gespeicherte Prozeduren die genau einen Rückgabewert liefern, eine universelle Prozedur schreiben.
Eine solche Prozedur in Access benötigt auf jedenfall ID-Feld und ID-Wert, welche beide zusammen das Abfragekriterium bilden.
Ist die Gespeicherte Prozedur universell gehalten (siehe 4. Codelisting im zweiten Teil der Serie), wird zusätzlich der Tabellennamen benötigt.
Bzw. bei einer speziell gehaltenen Gespeicherten Prozedur wird der Name der Gespeicherten Prozedur benötigt.

Ich verwende für letztere Zwecke die nachfolgende VBA-Prozedur:

Public Function singleProc(idWert As Double, idFeld As String, outputFeld As String, strProcname As String) As Variant
    ConnectionString = "Driver={SQL Server};Server=?;Database=?;Uid=?;Pwd=?;"
    Set cnn = OpenConnection(ConnectionString)
    Set cmdObj = New ADODB.Command
    With cmdObj
        .ActiveConnection = cnn
        .CommandText = strProcname
        .CommandType = adCmdStoredProc
        .CommandTimeout = 60
        .Parameters.Refresh
        .Parameters("@" & idFeld) = idWert
        .Execute
        singleProc = .Parameters("@" & outputFeld).Value
    End With
    Set cmdObj = Nothing
    Set cnn = Nothing
End Function

Damit kann jede gespeicherte Prozedur aufgerufen werden die genau 1 Inputvariable und genau 1 Outputvariable verlangt.
Der Namen beider Variablen können Variieren, sie werden ja als idFeld und outputFeld übergeben.
Read more »

Gespeicherte Prozeduren im MS SQL Server

By , 2. April 2011

Wer seine Access-Anwendung auf ein MS SQL Server (Express) umstellt, also migriert, stellt sich irgendwann sicherlich die Frage wie man die Performance von Abfragen erhöhen kann. Nach dem man die Abfragen optimiert hat –
Siehe z.B. Script zur 8. AEK: http://www.donkarl.com/AEK/AEK_Downloads.htm
– und sich immer noch nicht die gewünschte kurze Laufzeit von Abfragen einstellt, dann helfen zumeist sogenannte gespeicherte Prozeduren die man im SQL Server Management Studio von Microsoft anlegen kann.

Ich möchte diese nur kurz vorstellen anhand von 2 Beispielen, eines wo ein oder mehrere Feldwerte geändert werden (Setter-Funktion), und eine wo eine wo ein oder mehrere Feldwerte ausgelesen werden (Getter-Funktion).

gespeicherte Prozedur zur Änderung eines Feldwertes

Bild 1, gespeicherte Prozedur zur Änderung eines Feldwertes

Zu übergebende Parameter sind „ident“ und „Status“. Die Reihenfolge dieser Parameter ist später beim Aufruf der Gespeicherten Prozedur (engl. Kurzform = SP) von Bedeutung.
In der Prozedur lassen sich auch lokale Variablen deklarieren, wie z.B. sql als Platzhalter für den SQL-String.
Read more »

OfficeFolders theme by Themocracy