QDataSet – 使用 MarkStatus 函数来修改记录状态

QDataSet 提供了一个 MarkStatus 函数,它的作用是将指定的记录标记为特定的状态(新增、删除、未变更)。它可以在与 Provider 相连时,直接标记记录的状态,并提交结果到相应的数据库中。比如,我们将一个数据集所有的记录标记为 usInserted ,然后调用 ApplyChanges 将数据集所有的记录插入到目标数据库中的特定表中。

我们来看它的函数声明:

    /// <summary> 标记记录的状态为新状态 </summary>
    /// <param name="ANewStatus"> 新状态 </summary>
    /// <param name="ApplyToAll"> 是否应用到所有的记录,如果为False,则只修改当前记录</param>
    procedure MarkStatus(ANewStatus: TUpdateStatus; ApplyToAll: Boolean = True);

我们简单说明下它的参数:

  • ANewStatus 是一个 TUpdateStatus 类型的参数,除非当前记录的状态是 usModified ,否则设置 ANewStatus 参数为 usModified 会抛出异常;如果 ANewStatus 的值为 usUnmodified,则会合并记录的新值为原始值,并将记录标记为 usUnmodified,如果 ANewStatus 的值为 usInserted,则会合并记录的原始值为新值,并将记录状态标记为 usInserted,而如果 ANewStatus 的值为 usDeleted ,则会将记录删除并将变更的记录的标记为 usDeleted
  • ApplyToAll 参数决定了标记面向全部记录,还是只标记当前记录。

关于 MarkStatus 的用法示例,可以参考 Demos\Delphi\VCL\QDB\Copy 示例中的代码。

滚动至顶部