Hallo,
ist das ein Feature, Bug oder ein Fehler in meinem Quelltext?
Öffne ich in einer Funktion eine ADOConnection und schließe sie wieder - mache das gleiche nach einer Minute nochmal(in diesem Testprojekt Button1 wird gedrückt) -> Fehler: Im Project "..." ist eine
Exception der Klasse EOleException aufgetreten. Meldung 'Schwerwiegender Fehler'. Prozess wurde angehalten ...
Der Fehler liegt bei der Funktion aus der ADODB (Zeile: 1577)
Wird aber "Test" als Prozedure und nicht als Function deklariert, dann funktioniert es!?
Könnt ihr das mal bitte überprüfen.
Bei mir baut die ADOConnection eine Verbindung zu einer Informixdatenbank auf (Provider = Ifxoledbc.2).
System mit dieser Fehlermeldung: Windows XP Pro
Auf einem Win200 System konnte dieser Fehler nicht reproduziert werden.
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, Buttons,
DB, ADODB;
type
TForm1 =
class(TForm)
DBConnection: TADOConnection;
ADODataSet1: TADODataSet;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private-Deklarationen }
function Test : boolean;
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
const //Parameter: Passwort, User, Datenbank, Server
dbConnectionString = '
Provider=Ifxoledbc.2;Password=%s;Persist Security Info=True;User ID=%s;Data Source=%s@%s';
function TForm1.Test : boolean;
begin
if DBConnection.Connected
then DBConnection.Close;
DBConnection.ConnectionString := format(dbConnectionString, [...]);
//ausgeblendet, verrate doch nicht unsere Passwörter ;)
DBConnection.Open;
if DBConnection.Connected
then DBConnection.Close;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
test;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
if adodataset1.Active
then adodataset1.Close;
if dbconnection.Connected
then dbconnection.Close;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
test;
end;
end.