Du hast Recht durch meine Versuche sind mir ein paar Fehler unterlaufen (Ich hatte gepostet, als ich dabei war die Funktion umzubauen). Hier ist der Orginalquelltext, der den Fehler erzeugt hat. GetNextTaskStoredProc ist dabei eine Komponente vom Typ TADOStoredProc die ich im Designer gesetzt habe
Delphi-Quellcode:
function TKommunikationsDataModule.GetTask(Bezeichnung:
String;
var Device: Integer;
var Number:
String;
var ID:
String): Boolean;
var
returnvalue:Integer;
begin
LogMe('
GetTask');
result:=false;
returnvalue:=0;
GetNextTaskStoredProc.Parameters.ParamByName('
@Id').Value:=vaNull;
GetNextTaskStoredProc.Parameters.ParamByName('
@RETURN_VALUE').Value:=returnvalue;
GetNextTaskStoredProc.Parameters.ParamByName('
@Bezeichnung').Value:=Bezeichnung;
try
GetNextTaskStoredProc.ExecProc;
Device:=GetNextTaskStoredProc.Parameters.ParamByName('
@Device').Value;
Number:=GetNextTaskStoredProc.Parameters.ParamByName('
@Number').Value;
ID:=GetNextTaskStoredProc.Parameters.ParamByName('
@Id').Value;
Result:=true;
except
on E:
exception do
begin
LogMe('
GetTask'+e.
Message);
if e
is EOleException
then
begin
Watchdogdatamodule.Reconnect;
end
else
begin
if isWordInParameter('
debug')
then
Infomemo.Lines.Add(e.
Message);
end;
end;
end;
LogMe('
Ende GetTask');
end;
Interessant ist wahrscheinlich auch die Funktion Reconnect. Diese will ich aufrufen wenn der
SQL Server mal nicht zur Verfügung steht.
Delphi-Quellcode:
procedure Reconnect;
begin
try
ADOConnection1.Connected:=false;
Application.ProcessMessages;
ADOConnection1.Open;
except
on exception do;
end;
end;
Auf den Quellcode der SP habe ich momentan keinen Zugriff, da dieser von extern programmiert worden ist. Es ist aber so wie ich im Eingangspost beschrieben habe, dass die Funktion mehrere Stunden durchläuft, und dann den Fehler erzeugt. Interessant wäre wahrscheinlich auch, ob die Reconnectfunktion vor dem ersten Fehler durchlaufen wird. Kann diese etwas böses machen ?