Delphi操纵数据集的状态

时间:2016-08-25 13:09:09

标签: delphi dataset

有没有办法在删除或编辑或插入之前修改数据集的状态(TTAble)?

我尝试使用Table1.State := dsXXX。编译器告诉我不能修改这个属性。

2 个答案:

答案 0 :(得分:6)

属性State(继承自类TDataSet)是只读的。你不应该直接操纵它。

要删除/编辑/插入记录,请使用相应的方法Delete / Edit / Insert。它们按设计更改State的值。

据推测(因为您没有提供有关您正在做什么或尝试过的内容的任何信息),您要求修改State,因为您收到错误消息,例如

  

DataSet未处于编辑模式。

这是因为数据操作只能在通过调用Open方法打开数据集后才能完成。

答案 1 :(得分:2)

你可以做到这一点,但要注意,通过你所做的事情,你并没有颠覆TDataSet的状态模型。

您需要声明正在使用的TDataSet类型的后代类。 E.g。

SetTempState

然后,通过将数据集转换为该类型,您可以在其上使用RestoreStateSaveState := Table1.State; try TmyTTable(Table1).SetTempState(); // do something finally TmyTTable(Table1).RestoreState(SaveState); end;

SetTempState

但是,您应该真正查看DB.Pas中的SetTempState的来源。并且极其谨慎 - 使用{{1}}要求麻烦。 SetTempState用于DBClient.Pas,fwiw。

中的几个地方