Delphi 2010
Я пытаюсь использовать TSimpleDataset для нескольких целей.
var
q: tsimpledataset;
row: String;
n: Integer;
begin
q:=tsimpledataset.create(nil);
q.connection:= SQLConnection1 ;
q.dataset.commandtype:=ctQuery ;
q.dataset.commandtext:='select lastid from last_id where tablename=:ARow';
q.Params.Assign(q.Dataset.Params);
ShowMessage(q.dataset.commandtext);
row:='accounts';
q.params[0].asstring:= row;
q.open;
if q.isempty then
raise exception.create('No matching row found in LAST_ID table.');
n:=q.fieldbyname('lastid').asinteger +1;
q.close;
q.dataset.commandtype:=ctQuery ;
q.dataset.commandtext:='update last_id set lastid=22';
q.execute; //exception Here!
end;
В строке q.Execute появляется следующая ошибка:
Отсутствует поставщик данных или пакет данных
Кажется, проблема с закрытием TSimpleDataset и его повторным использованием.
Это работало бы, если бы я освободил это и воссоздал это и повторно назначил свойства и новые свойства, чтобы использовать это для выполнения. Однако я бы не хотел этого делать. Я хотел бы иметь возможность закрыть его, а затем назначить новый CommandText и повторно использовать его.
Я исследовал и прочитал множество комментариев в Интернете, в которых не использовался ошибочный TSimpleDataset, чтобы использовать вместо этого три других компонента (ClientDataSet, DataSetProvider и SQLDataSet). Можно подумать, что к 2010 году Embarcadero решит любые проблемы с TSimpleDataset.
Есть ли какой-нибудь обходной путь, кроме необходимости переключиться на что-то другое, кроме TSimpleDataset?
Спасибо!