有没有办法在删除或编辑或插入之前修改数据集的状态(TTAble)?
我尝试使用Table1.State := dsXXX
。编译器告诉我不能修改这个属性。
答案 0 :(得分:6)
属性State
(继承自类TDataSet
)是只读的。你不应该直接操纵它。
要删除/编辑/插入记录,请使用相应的方法Delete
/ Edit
/ Insert
。它们按设计更改State
的值。
据推测(因为您没有提供有关您正在做什么或尝试过的内容的任何信息),您要求修改State
,因为您收到错误消息,例如
DataSet未处于编辑模式。
这是因为数据操作只能在通过调用Open
方法打开数据集后才能完成。
答案 1 :(得分:2)
你可以做到这一点,但要注意,通过你所做的事情,你并没有颠覆TDataSet的状态模型。
您需要声明正在使用的TDataSet类型的后代类。 E.g。
SetTempState
然后,通过将数据集转换为该类型,您可以在其上使用RestoreState
和SaveState := Table1.State;
try
TmyTTable(Table1).SetTempState();
// do something
finally
TmyTTable(Table1).RestoreState(SaveState);
end;
:
SetTempState
但是,您应该真正查看DB.Pas中的SetTempState的来源。并且极其谨慎 - 使用{{1}}要求麻烦。 SetTempState用于DBClient.Pas,fwiw。
中的几个地方