0

我有一个表,我已将其设置为另一个表单使用的指针。

此表单上有一个过程,如果 GUID 尚不存在,则使用 For 循环在表中创建新记录。

With Table^ do
for I := 0 to Results.result.RowCount - 1 do
begin
  IndexName := 'GUID';
  SetKey;
  FieldByName('GUID').AsString := Results.UserDetail[I].Guid;
  if not Gotokey then
  begin
    Insert;
    etc..
  end;


大多数时候它工作得很好。但是在某些情况下,当它尝试设置密钥时,而不是从 dsBrowse 到 dsSetKey 的表状态它停留在 dsBrowse ,因此我得到一个“表不在编辑模式错误”

发生这种情况的一种情况是它像 10 次一样遍历 forloop 并且工作顺利,但是在第 11 次它无法将表更改为 setkey 模式。

您是否知道该表可能发生了什么,或者为什么在调用 SetKey 后表会保持浏览模式?

谢谢

更新-

我也遇到了类似的情况,SetRangeStart 没有改变状态而是保持在浏览模式。我什至摆脱了表上的所有更改事件并跟踪到 SetRangeStart 以确保没有运行其他代码并且它仍然没有更改状态。

相同的代码使用大多数数据集都可以正常工作。所以我相信它可能与数据有关..有什么想法吗?

4

1 回答 1

0

我发现当遇到这个问题时,如果我在使用它时在桌子上禁用了控件,然后在它解决了问题后启用了启用控件。

Table.DisableControls;
....
Table.EnableControls;
于 2013-08-16T15:48:59.533 回答