Hallo,
falls das Problem noch nicht weg sein sollte, versuche mal bitte folgendes:
Delphi-Quellcode:
unit1.form1.ADOConnection1.Close; //<----------
Unit1.form1.adotable1.Close;
ShowMessage('****');
unit1.Form1.ADOTable1.TableName:=tabellenname;
unit1.form1.ADOConnection1.open;
Unit1.form1.adotable1.open;
Dadurch wird eine mehr oder weniger von Dir beeinflussbare Pause eingebaut. Wenn es damit funktioniert, bist Du im Programmablauf zu schnell und "überholst" quasi die Datenbank. Um das Problem zu lösen könntest Du anstelle von ShowMessage ein Sleep(1000) einbauen. Den Wert 1000 musst Du eventuell anpassen. Eine "brutalere" Möglichkeit könnte in etwa so aussehen:
Delphi-Quellcode:
var
i : Integer;
...
Unit1.form1.adotable1.Close;
unit1.Form1.ADOTable1.TableName:=tabellenname;
unit1.form1.ADOConnection1.open;
i := 0;
repeat
inc(i);
Try
Unit1.form1.adotable1.open;
Except
End;
until Unit1.form1.adotable1.Active or (i >= 3); // maximal drei Versuche starten
if Not Unit1.form1.adotable1.Active then begin
// Behandlung der Situation, dass die Tabelle nach dem 3. Versuch nicht zu öffnen ist.
ShowMessage('Die Tabelle ' + tabellenname + ' konnte nicht geöffnet werden.');
end;
Über die "Eleganz" dieser Lösung wollen wir uns lieber nicht unterhalten