Es hat etwas mit der Menge der daten zu tun. Wenn ich eine Tabelle mit 6.000 Datensätzen nehme dann kommt keine Fehlermeldung bei Close.
Eine Tabelle mit 500.000 Datensätzen macht Probleme.
Der Testaufbau ist simpel. Ich klicke "Open" dann werden sofort Daten im DBGrid angezeigt.
Wenn ich dann "Close" klicke kommt die Fehlermeldung. Auch wenn ich 10 Sekunden warte.
Delphi-Quellcode:
unit Unit3;
interface
uses
Winapi.Windows,
Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.Dialogs, Data.DB,
Vcl.Grids,
Vcl.DBGrids, MemDS,
DBAccess, MyAccess,
Vcl.StdCtrls;
type
TForm3 =
class(TForm)
btnOpen: TButton;
MyConnection1: TMyConnection;
MyTable1: TMyTable;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
btnClose: TButton;
cbFetchAll: TCheckBox;
cobTableNames: TComboBox;
procedure btnOpenClick(Sender: TObject);
procedure btnCloseClick(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form3: TForm3;
implementation
{$R *.dfm}
procedure TForm3.btnOpenClick(Sender: TObject);
begin
MyTable1.TableName := cobTableNames.Text;
//--
if NOT cbFetchAll.Checked
then
MyTable1.FetchAll := false;
//--
MyTable1.Open;
end;
procedure TForm3.btnCloseClick(Sender: TObject);
begin
MyTable1.Close;
end;
end.