1

我正在使用 Delphi 2010 并使用 dbexpress 连接到 MySQL 数据库。连接工作 100%,我正在检索我的数据。当我尝试通过 dbGrid 更新数据时,问题就来了。我正在遍历表中的所有条目,对它们进行检查。调用 ApplyUpdates 方法时,我收到“未找到记录或其他用户更改记录”。

将 DataSetProvider 上的 updateMode 更改为 upWhereKeyOnly,我现在处于收到“无法找到记录,未指定密钥”的情况。我试过添加

BasysClientDataSet.FieldByName('idPolicy').ProviderFlags := [pfInUpdate, pfInWhere, pfInKey];

这是代码,但我得到了同样的错误。我尝试将 ProviderFlags 添加到 SQLQuery,但我没有得到这样的字段“idPolicy”

4

3 回答 3

1

尝试像您一样为所有主键列设置提供程序标志 pfInKey,但不是在客户端数据集中而是在源数据集中。即使当 db express 忽略这些设置时,即使我不明白客户端数据集中的字段到底在做什么,这也能帮助我?我会说它是一个错误。

于 2012-10-29T09:10:35.897 回答
0

尝试将DataSetProvider 组件的ResolveToDataSet属性设置为True

于 2011-10-12T18:47:25.853 回答
0

尝试创建此过程并在提供程序BeforeUpdateRecord事件中使用它。

procedure SetOriginFlags(Source, Dest: TCustomClientDataSet);
var
  i: Integer;
begin
  for i := 0 to Source.FieldCount - 1 do
  begin
    if Dest.FindField(Source.Fields[i].FieldName) <> nil then
    begin
      Dest.FindField(Source.Fields[i].FieldName).ProviderFlags :=
        Source.Fields[i].ProviderFlags;
      if Dest.FindField(Source.Fields[i].FieldName).ProviderFlags <> [pfHidden] then
        Dest.FindField(Source.Fields[i].FieldName).Origin :=
          Source.Fields[i].FieldName;
    end;
  end;
end;
于 2015-06-16T23:36:25.680 回答