什么会导致SetKey不改变我的表状态?

时间:2012-11-08 22:05:10

标签: delphi delphi-xe advantage-database-server

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

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

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,因此我得到一个"表没有在编辑模式错误"

发生这种情况的一种情况是,它会循环遍历forloop 10次并且运行顺利但是在11次它无法将表更改为setkey模式..

您对表格可能会发生什么有什么想法,或者在调用SetKey后表格为何会保持浏览模式?

由于

更新 -

我也遇到类似的情况,SetRangeStart不改变状态但保持浏览模式。我甚至摆脱了桌面上的所有更改事件并追溯到SetRangeStart以确保没有运行其他代码并且它仍然没有改变状态。

使用大多数数据集时,相同的代码工作正常。所以我相信它可能与数据有关..任何想法?

1 个答案:

答案 0 :(得分:0)

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

Table.DisableControls;
....
Table.EnableControls;