Я использую Delphi XE3 с базой данных MySQL. У меня есть привязка SQLconnection - SQLquery - DataSetProvider - ClientDataSet. Когда я ApplyUpdates изменения в 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
Я попытался закрыть и открыть СД в качестве альтернативы для обновления, но я получил то же самое результат. Есть идеи, почему это происходит?
Я ожидаю, что первая строка станет «3004» для модифицированных данных. Ваш результат действительно отражает ваш тестовый пример? –
Вы должны проверить результат ApplyUpdates, чтобы убедиться, что ваши изменения фактически записаны в базу данных. –
Какой запрос? –