@nahpets
auf den ersten Blick das sieht meiner Procedure recht ähnlich:
Delphi-Quellcode:
function GetADOErrorstring(conn:TADOConnection):
string;
{ nur die ADO-Errors!}
var
iError : Integer;
sError :
string;
begin
if conn.Errors.Count>0
then begin
sError:=format('
ADO-Error(s): %d',[conn.Errors.Count])+CRLF+CRLF;
for iError := 0
to conn.Errors.Count - 1
do begin
{-- ADO Errors: }
sError:=sError+Format('
Error-No.: 0x%x',[conn.Errors[iError].Number])+CRLF;
sError:=sError+Format('
%s; (SQLState: %s)',[conn.Errors[iError].Description, conn.Errors[iError].SQLState])+CRLF;
sError:=sError+Format('
Source: %s', [conn.Errors[iError].Source])+CRLF;
sError:=sError+Format('
NativeError: %d', [conn.Errors[iError].NativeError])+CRLF+CRLF;
end;
result:=serror;
end;
end;
{-- GetADOErrorstring -------------------------------------------}
ich schau es mir mal näher an.
Was genau läuft denn jetzt in welchem Thread?
die nackte Abfrage in einem, die Datenausgabe im zweiten und dann gibt es noch den Hauptthread der leben vortäuscht.
Wenn du aus einem Thread heraus etwas anzeigen willst, musst du Synchronize() (o.ä.) benutzen.
Auch bei ShowMessage bzw. Exceptions? ich hab im Hinterkopf, das da automatisch was eigenes für erzeugt wird?
Ansonsten hoffe ich mal, dass du nicht aus dem Thread heraus auf
ADO-Komponenten auf dem Formular zugreifst.
wenn Du unter Formular das Hauptformular verstehst (und nicht das DM) dann nein.
Gruß
K-H