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 #
- Client.ExecuteSql - SQL direkt ausführen (ohne Proc-Handling)
- ADO-Recordset - Arbeiten mit Abfrageergebnissen