![]() |
Datenbank: MSSQL • Version: 2012 • Zugriff über: ADO
StoredProcedure über ABO aufrufen ohne das Programm blockiert
Hallo,
ich nutze die ADO-Komponenten aus dem Lieferumgang von Delphi. Ich möchte per Button-Klick eine StoredProcedure aufrufen. Diese läuft mehrere Minuten. Daher soll *sofort* nach dem Klick ein Weiterabreiben im Programm möglich sein. Das Programm soll nicht blockieren. Genau das tut es bei Aufruf von ADOsp.ExecProc jedoch. Jetzt habe ich ADOsp.ExecuteOptions.eoAsyncExecute auf true gesetzt, damit es nicht mehr blockiert. Dabei gibt es jedoch folgende Exception:
Code:
Im Projekt xxxxx.exe ist eine Exception der Klasse EOleException mit der Meldung 'Der Vorgang kann nicht bearbeitet werden, während ein asynchroner Befehl ausgeführt wird' aufgetreten.
Delphi-Quellcode:
Wie bekomme ich das gelöst? Vielen Dank im Voraus!
ADOsp: TADOStoredProcedure
... ADOsp.ProcedureName := 'MyTestProc'; ADOsp.Parameters.Clear; ADOsp.Parameters.AddParameter.Value := 123; ADOsp.Parameters.AddParameter.Value := 'test'; ADOsp.ExecProc; //<-- Exception hier |
AW: StoredProcedure über ABO aufrufen ohne das Programm blockiert
Moin...8-)
Da hilft nur die SP in einen Thread auszulagern. :wink: |
AW: StoredProcedure über ABO aufrufen ohne das Programm blockiert
Zitat:
|
AW: StoredProcedure über ABO aufrufen ohne das Programm blockiert
Du könntest es vielleicht in einem eigenen Thread aufrufen.
Weiß nicht, was MSSQL so kann, aber es lässt sich mindestens über den OS Scheduler ansteueren, ggF. hat es eigene Job Routinen wie Oracle. Dort machen wir sowas je nach Bedarf auch als Job. Man startet dann per SP nicht die Nutzlast Procedure, sondern halt einen Job, der das macht. Der Aufruf kommt sofort zurück. Vorteil ist, man erhält Logs und Monitoring Möglichkeiten geschenkt. Das ermöglicht wiederum eine nebenläufige Fortschrittsanzeige oder Benachrichtigung bei Ende, Erfolg/Fehlerkontrolel oder oder Leider kann ich bei MSSQL nur vermuten, dass sowas ginge. Mindestens über den Taskscheduler sollte es aber möglich sein. Ggf hat der auch ein Interface "nach innen" zu MSSQL. |
AW: StoredProcedure über ABO aufrufen ohne das Programm blockiert
Hallo,
viell. hilft das? ![]() Ganz unten wird eine Query empfohlen mit dem genannten Parameter und Open. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz