MySQL データベースで Delphi XE3 を使用しています。SQLconnection – SQLquery – DataSetProvider – ClientDataSet の配置があります。CDS への変更の ApplyUpdates を実行すると、変更はデータベースに正しく反映されますが、CDS を更新すると、「古い」値が置き換えられます。私が使用しているコードは次のとおりです。
CDS.IndexFieldNames:='pop0';
CDS.first;
for W := 1 to 5 do begin // display the original data
memo2.lines.add (IntToStr(CDS['pop0'])); CDS.Next;
end;
memo2.lines.add('');
CDS.first;
CDS.Edit; // modify data
CDS['pop0']:= 3004;
CDS.Post;
CDS.first;
for W := 1 to 5 do begin // display the modified data
memo2.lines.add (IntToStr(CDS['pop0'])); CDS.Next;
end;
memo2.lines.add('');
CDS.ApplyUpdates(0) ;
messagedlg('Check database',mtInformation,[mbOK],0);
CDS.refresh;
CDS.first;
for W := 1 to 5 do begin // display the updated data
memo2.lines.add (IntToStr(CDS['pop0'])); CDS.Next;
end;
メモの出力は次のとおりです。
3
4
375
597
678
4
375
597
678
986
3
4
375
597
678
更新の代わりに CDS を閉じて開いてみましたが、同じ結果が得られました。なぜこれが起こっているのですか?