我有一个表,我已将其设置为另一个表单使用的指针。
此表单上有一个过程,如果 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 以确保没有运行其他代码并且它仍然没有更改状态。
相同的代码使用大多数数据集都可以正常工作。所以我相信它可能与数据有关..有什么想法吗?