【问题标题】:Strange behaviour about "Dataset Not In Insert or Edit Mode..." Error关于“数据集未处于插入或编辑模式...”错误的奇怪行为
【发布时间】:2015-04-22 13:58:18
【问题描述】:

我正在使用带有 TFIBDataset 组件的 Delphi 2010。

我面临一个非常奇怪的问题,我有两个 TFIBDataset 组件,分别称为 DS1 和 DS2。

当我尝试在 DS1 中发布数据时,如下所示:

DS1.Post;

我收到“数据集未处于插入或编辑模式...”的错误消息。

我遇到了与我要发布其数据的数据集相关的此类错误,但这是我面临的全新问题。

即使我尝试使 DS2 处于编辑模式,如下所示:

DS2.Edit;
DS1.Post;

然后我也遇到了同样的错误。

有什么线索吗?

【问题讨论】:

  • DS1 与 DS2 有何关系,您将 DS2 置于编辑模式以在 DS1 上发布?
  • 这也是我想知道的,只有当我说 DS1.Post 时问题才会出现;我得到了错误。我想知道可能是什么导致的问题。
  • 您必须在调用 DS1.Post 之前将 DS1 设置为编辑或插入模式,方法是调用 DS1.Edit 或 DS1.Insert
  • 您的代码设置为DS2.Edit,但尝试发布到DS1。如果要编辑DS1 然后发布更改,则需要在两个操作中使用DS1。您不能编辑一个数据集并发布到另一个数据集。目前尚不清楚您实际上要做什么,因为您发布的代码非常错误。这就像在说“我的左手脏了,但是当我洗右手时,左手却不干净”。您收到错误是因为您没有编辑和发布到同一个数据集。没有“奇怪的问题”;这是完全错误的代码,显然没有意义。
  • 我已经解释了原因。您不能编辑 DS1,然后发布到 DS2。如果你想编辑 DS1,那么 'DS1.Edit; // 改变 DS1 DS1.Post;. If you want to edit DS2, then DS2.Edit; // 改变 DS2 DS2.Post;. You can't DS1.Edit; DS2.邮政;`。您只能发布已置于编辑模式的相同数据集。这是普通常识。 您不能将更改发布到您尚未进入编辑模式的数据集。 我不知道如何说得更清楚,我不知道如何一遍又一遍地重复它强迫您实际阅读这些单词。

标签: delphi delphi-2010 fibplus


【解决方案1】:

我通过编写以下代码使代码正常工作:

DS1.DisableContrils;
DS1.Post;
DS1.EnableContrils;

致以最诚挚的问候。

维沙尔

【讨论】:

  • 这如何回答这个问题?肯已经解释了问题所在。您还没有显示 DS1 处于编辑模式的代码。
【解决方案2】:

我遇到了同样的问题,并采取了以下措施来解决我的问题:

 for I := 0 to  Datamodule1.ComponentCount - 1 do
 if Datamodule1.Components[I] is TADOTable then
  Begin
    if (TADOTable(datamodule1.Components[i]).State in [dsEdit, dsInsert]) then
     TADOTable(datamodule1.Components[i]).POST;
  End;

我希望这会有所帮助

【讨论】:

    猜你喜欢
    • 2018-06-27
    • 1970-01-01
    • 1970-01-01
    • 2013-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-13
    相关资源
    最近更新 更多