변경 사항을 TClientDataset
에서 어떻게받을 수 있습니까?TClientDataset을 다른 TClientDataset으로 변경하는 방법은 무엇입니까?
나는 GetDataset
이라는 TClientDataset
이며 그리드가 있습니다. 변경 사항을 ChangeDataset
으로 변경하고 싶습니다.
어떻게하면됩니까?
변경 사항을 TClientDataset
에서 어떻게받을 수 있습니까?TClientDataset을 다른 TClientDataset으로 변경하는 방법은 무엇입니까?
나는 GetDataset
이라는 TClientDataset
이며 그리드가 있습니다. 변경 사항을 ChangeDataset
으로 변경하고 싶습니다.
어떻게하면됩니까?
당신이 소스 ClientDataSet에 CDS1이있는 경우, 당신은 당신이 것을 시도하는 경우에 당신이 볼 수 있듯이
if CDS1.ChangeCount > 0 then
CDS2.Data := CDS1.Delta;
을 수행하여 두 번째 ClientDataSet에 CDS2에 변경된 기록을 복사 할 수 있어야한다, 그것은 "당신을 제공합니다 이전 "기록과 변경 기록이 있습니다. 그것은 반드시 당신이 원하는 것이 아닐 수도 있습니다 - 솔직히 말해서 당신은 Whipple 기사를 읽고 OLH에 올리면 성취하고자하는 정확한 결과를 얻을 수 있습니다. 요점은, ApplyUpdates()를 호출하여 플러시 할 때까지 필요한 모든 정보가 소스 CDS에 있다는 것입니다. 그 후에는 성공하면 변경 로그가 비어 있습니다.
CDS2의 행을 보면 특정 필드에 변경된 값이 포함되어 있는지 여부와 비어있는 필드를 구별하는 방법을 즉시 알 수 없습니다. Istr은 Mark Edington이 만든 볼랜드 NTTP 뉴스 그룹 중 한 곳에서 꽤 오래 전부터 좋은 소식을 전했습니다. 당신은 XML에 대한 CDS의 상태를 저장할 수 있기 때문에
if VarIsClear(CDS2.Fields[i].NewValue) then
// means Fields[i] does not have a changed value
, 당신은 XML 조작, 예를 들어, 사용할 수 있습니다, 그런데 : 기본적으로, 필드의 NewValue로 속성에 VarIsClear을 평가하는 질문입니다 TDataSet 패러다임을 사용하는 데 번거로운 일들을 쉽게 수행 할 수있는 Windows 내장형 파서 (MSXML.Pas 참고)와 같은 DOM 파서를 사용하면됩니다.
에릭 위플의 기사 http://conferences.embarcadero.com/article/32227#AuditTrail –
@SirRufo : 많은 도움을 주셔서 감사합니다. 매우 유용합니다. – MartynA
ChangeDataSet이 변경된 첫 번째 ClientDataSet의 레코드만을 포함하도록 하시겠습니까? 아니면 모두들입니까? – MartynA
변경된 내용 – Tarasov