Delphi ADO:保存 DBEdit 更改
Delphi ADO: save DBEdit changes
我使用 ADO 打开了 Excel table(尽管它可能与任何其他数据库相同:adoconnection、adotable、数据源)并将其显示在 ReadOnly DBGrid 中。
我有 DBEdit 来编辑当前选定行中的一些值。
可是怎么保存呢?我在 FormClose 上尝试了 adotable.Post,但它抛出了 "dataset not in edit or insert mode".
的错误
我需要在 DBEdit OnEnter 和 Post OnExit 中调用 adotable.Edit 吗?
Post
当用户导航到另一条记录时自动调用。
您唯一需要调用 Post
的情况是在您关闭表单时当前选定的记录有未决更改。
但即便如此,您也不必显式调用 Post
:您可以使用辅助函数 CheckBrowseMode
。如果数据集处于编辑模式,CheckBrowseMode
检查是否有任何修改。如果不是,它会取消编辑,否则,它会发布这些更改。 CheckBrowseMode
如果数据集已经不处于编辑模式,则不会引发任何异常,只有当数据集关闭时(这在您的情况下是不可能的)。
我使用 ADO 打开了 Excel table(尽管它可能与任何其他数据库相同:adoconnection、adotable、数据源)并将其显示在 ReadOnly DBGrid 中。 我有 DBEdit 来编辑当前选定行中的一些值。
可是怎么保存呢?我在 FormClose 上尝试了 adotable.Post,但它抛出了 "dataset not in edit or insert mode".
的错误我需要在 DBEdit OnEnter 和 Post OnExit 中调用 adotable.Edit 吗?
Post
当用户导航到另一条记录时自动调用。
您唯一需要调用 Post
的情况是在您关闭表单时当前选定的记录有未决更改。
但即便如此,您也不必显式调用 Post
:您可以使用辅助函数 CheckBrowseMode
。如果数据集处于编辑模式,CheckBrowseMode
检查是否有任何修改。如果不是,它会取消编辑,否则,它会发布这些更改。 CheckBrowseMode
如果数据集已经不处于编辑模式,则不会引发任何异常,只有当数据集关闭时(这在您的情况下是不可能的)。