ここでも、TClientDataSetに問題があります。とてもシンプルなことだと思いますが、しばらく苦労しています。
これが私がやりたいことを示すいくつかのコードです:
procedure TForm1.Button1Click(Sender: TObject);
begin
ClientDataSet1.Insert;
ClientDataSet1.FieldByName('anruf_von').AsDateTime := time;
ClientDataSet1.Post;
ClientDataSet1.ApplyUpdates(0); // without this applyUpdates in button2 works.
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
ClientDataSet1.edit;
ClientDataSet1.FieldByName('anruf_bis').AsDateTime := time;
ClientDataSet1.Post;
showmessage(intToStr(ClientDataSet1.ChangeCount)); // returns 1
if ClientDataSet1.ChangeCount > 0 then
ClientDataSet1.applyUpdates(0);
end;
コードは自明だと思います。button1を押すと、レコードが作成され、applyUpdatesを呼び出した後、データベースに書き込まれます。button2を押すと、このレコードに変更を加えてデータベースに更新を適用したいのですが、それは機能しません。しかし、button1のapplyUpdatesをコメントアウトすると、button2のapplyUpdatesは正しく機能します。