My Delphi 프로젝트에는 MS Sql Server 2014 서버에 대한 TAdoQuery 액세스 데이터와 TDataSetProvider를 통해 AdoQuery 데이터를받는 TClientDataSet이 있습니다. 이것은 내가 설정 한 프로젝트 템플릿에서 생성됩니다.TClientDataSet.ApplyUpdates()가 업데이트를 적용하지 않습니다.
일반적으로이 설정은 문제없이 작동하지만이 특정 프로젝트에서는 ApplyUpdates()가 자동으로 실패하고 Sql Server 데이터가 업데이트되지 않습니다. 내 옷을 벗었 디버깅 프로젝트, 내가 가진 유일한 코드에서 떨어져를 호출하는 버튼 클릭 핸들러에서이다 :이 실행 된 후
procedure TForm1.ApplyUpdates;
var
Errors : Integer;
begin
Errors := ClientDataSet1.ApplyUpdates(0);
Caption := IntToStr(Errors) + '/' + IntToStr(ClientDataSet1.ChangeCount);
end;
, 폼의 캡션은 물론 0/0
수 있지만, 실제로 말씀한다 0/1
입니다. 그래서 그것의 얼굴에, 아무런 오류도 발생하지 않았습니다. 그러나 CDS ChangeCount
은 반드시 0으로 재설정되지 않았습니다. 내 질문은, 어떻게 ApplyUpdates 오류를 반환 할 수 있지만 서버 데이터 집합이 업데이트되지 않습니다.
Fwiw, 문제를 디버그하기위한 노력의 일환으로 ChangeCount 디스플레이를 추가했습니다. 그러나 나는 서버에서 업데이트를 적용하기 위해 DataSetProvider와 DataSet 간의 "대화"에 대한 세부 사항에서 진행될 작업을 수행 할 수 없었습니다.
오류 처리기 OnReconcileError에 대한 코드를 추가 했습니까? – mjn