SQL Proc Objekt
Zuletzt geändert: 10.02.2026 18:34

SQLPROC-Objekt (iScript) #

Das SQLPROC-Objekt ermöglicht die Ausführung von gespeicherten SQL-Prozeduren (Stored Procedures) mit vollem UI-Handling. Wenn bei der Ausführung Benutzereingaben erforderlich sind (z.B. Seriennummern beim Buchen eines Lieferscheins), werden diese automatisch abgefragt. Das Verhalten entspricht weitestgehend dem Aufruf des entsprechenden Menüpunkts.

Set proc = Client.CreateObject("SQLPROC")

Hinweis: Beim Erstellen des Objekts wird geprüft, ob der aktuelle Benutzer Berechtigungen auf die Prozedur hat. Ist dies nicht der Fall, wird ein Fehler ausgelöst.

Übersicht #

Eigenschaften #

Eigenschaft Typ Beschreibung
ProcName string Name der Stored Procedure (mit dbo.-Präfix)
ReturnValue Integer Rückgabewert der Prozedur (nach Execute)
ErrorMsg string Fehlermeldung (nach fehlgeschlagenem Execute)
HideErrors Boolean Fehleranzeige unterdrücken, Fehler manuell behandeln
Title string Dialogtitel bzw. Text bei längerer Wartezeit
ExtraErrorMsg string Zusätzliche Fehlermeldung, z.B. zum Debuggen

Methoden #

Methode Rückgabe Beschreibung
SetParamValues(Name, Wert) Parameter der Prozedur setzen
GetParamValues(Name) Variant Parameterwert auslesen
Execute Boolean Prozedur ausführen
RenderSql string SQL-Aufruf als Text erzeugen (zum Debuggen)
CreateCmd Command ADO-Command-Objekt für manuelle Ausführung erzeugen
ShowError Unterdrückten Fehler nachträglich anzeigen

Eigenschaften #

HideErrors #

Wenn True, wird bei einem Fehler kein Dialog angezeigt. Der Fehler muss dann manuell über ErrorMsg und ReturnValue ausgewertet werden. Bei Bedarf kann der Fehler nachträglich mit ShowError angezeigt werden.

ExtraErrorMsg #

Zusätzlicher Text, der bei einem Fehler mit ausgegeben wird. Nützlich zum Debuggen, um z.B. die übergebenen Parameter oder den Kontext zu dokumentieren.

Methoden #

SetParamValues / GetParamValues #

procedure SetParamValues(Name: string, Value: Variant)
function GetParamValues(Name: string): Variant

Setzt bzw. liest Parameter der Stored Procedure. Der Parametername muss mit @ beginnen, wie in SQL üblich.

Execute #

function Execute: Boolean

Führt die Stored Procedure aus. Gibt True bei Erfolg zurück. Falls Benutzereingaben erforderlich sind (z.B. Seriennummern), werden automatisch die entsprechenden Dialoge angezeigt.

Wichtig: Der Rückgabewert ist ein COM-Boolean. Vergleiche mit = True funktionieren nicht zuverlässig. Stattdessen immer If proc.Execute Then verwenden.

RenderSql #

function RenderSql: string

Erzeugt den SQL-Aufruf als lesbaren Text, ohne ihn auszuführen. Nützlich zum Debuggen, um die übergebenen Parameter zu kontrollieren.

' Beispielausgabe:
' EXEC ? = dbo.cn_afBuchen @af_id=1482

CreateCmd #

function CreateCmd: Command

Erzeugt ein ADO-Command-Objekt für die Prozedur, ohne sie auszuführen. Ermöglicht die manuelle Ausführung mit eigenem Fehlerhandling oder in einer eigenen Transaktion.

ShowError #

procedure ShowError

Zeigt einen zuvor unterdrückten Fehler nachträglich an. Nur sinnvoll, wenn HideErrors = True gesetzt wurde und Execute fehlgeschlagen ist.

Beispiele #

A. Stored Procedure ausführen #

Option Explicit

Dim proc
Set proc = Client.CreateObject("SQLPROC")

proc.ProcName = "dbo.cn_afBuchen"
proc.SetParamValues "@af_id", 1482

If proc.Execute Then
  ellib.ShowMessage "Erfolgreich gebucht! Rückgabewert: " & proc.ReturnValue
End If

Set proc = Nothing

B. Fehlerbehandlung mit HideErrors #

Option Explicit

Dim proc
Set proc = Client.CreateObject("SQLPROC")

proc.ProcName = "dbo.cn_afBuchen"
proc.SetParamValues "@af_id", 1482
proc.HideErrors = True

If proc.Execute Then
  ellib.ShowMessage "Auftrag gebucht!"
Else
  ' Fehler selbst behandeln
  If proc.ReturnValue = -1 Then
    ellib.ShowMessage "Auftrag kann nicht gebucht werden: " & proc.ErrorMsg
  Else
    ' Fehler doch anzeigen
    proc.ShowError
  End If
End If

Set proc = Nothing

C. SQL-Aufruf vorab prüfen (Debugging) #

Option Explicit

Dim proc
Set proc = Client.CreateObject("SQLPROC")

proc.ProcName = "dbo.cn_afBuchen"
proc.SetParamValues "@af_id", 1482
proc.ExtraErrorMsg = "Test mit Auftrag ID 1482"

' SQL anzeigen ohne auszuführen
ellib.ShowMessage proc.RenderSql

Set proc = Nothing

Siehe auch #