저는 MySQL 데이터베이스에서 Delphi XE3을 사용하고 있습니다. SQLConnection - SQLquery - DataSetProvider - ClientDataSet 배열이 있습니다. CDS에 수정의 ApplyUpdates를 적용하면 데이터베이스의 변경 사항이 올바르게 적용되지만 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;
다음 메모에서 출력 될 때 : 내가 새로 고침에 대한 대안으로 CDS를 닫고 열기를 시도했지만 내가 같은 가지고
3
4
375
597
678
4
375
597
678
986
3
4
375
597
678
결과. 왜 이런 일이 일어나고 있는거야?
첫 번째 행이 수정 된 데이터에 대해 '3004'가 될 것으로 기대합니다. 출력물에 실제로 테스트 사례가 반영되어 있습니까? –
ApplyUpdates 결과를 확인하여 변경 사항이 실제로 데이터베이스에 기록되는지 확인해야합니다. –
어떤 검색어입니까? –