Вы можете сделать это, но будьте осторожны, что, по вашему мнению, вы не подрываете модель состояния TDataSet.
Вам необходимо объявить класс потомков используемого типа TDataSet. Например.
type TmyTTable = Class(TTable);
Затем литья набора данных к этому типу, вы можете использовать SetTempState
и RestoreState
на нем:
SaveState := Table1.State;
try
TmyTTable(Table1).SetTempState();
// do something
finally
TmyTTable(Table1).RestoreState(SaveState);
end;
Вы должны реально смотреть на источнике SetTempState в DB.Pas, хотя. И продолжайте с особой осторожностью - с помощью SetTempState
задает проблемы. SetTempState используется в нескольких местах в DBClient.Pas, fwiw.
«манипуляция данными может быть выполнена только после того, как набор данных был открыт». Правда, но поскольку закрытый набор данных, скорее всего, будет проявляться в gui, это может быть скорее связано с отсутствием вызова Edit или Insert. – MartynA