-1
我使用Delphi XE3與MySQL數據庫。我有一個SQLconnection - SQLQuery - DataSetProvider - ClientDataSet安排。當我修改CDS的更新時,更改會在數據庫中正確地受到影響,但是當我刷新CDS時,「舊」值將被替換。我正在使用的代碼是:clientdataset.refresh檢索舊數據
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作爲刷新的選擇,但我得到了同樣的結果。任何想法爲什麼發生這種情況?
我期望第一行成爲'3004'的修改後的數據。你的輸出是否真的反映你的測試用例? –
您應該檢查ApplyUpdates的結果以確保您的更改實際寫入數據庫。 –
什麼是查詢? –