delphi에서clientdataset 사용 방법

1. 기본 상황 소개;clientdataset 메모리표, 그의 데이터 속성은 데이터를 저장하고델타 증량 기록은 로그로 데이터베이스의savepoint 저장점에 해당한다.clientdataset의 데이터가 변할 때(onbeforeedit,onafteredit)마다savepoint가 변합니다.만약 우리가 일정 시간의 조작을 취소하고 싶다면, 우리는 먼저 이savepoint를 기록한 다음에 수정할 수 있으며, 취소하고 싶으면 이savepoint=이전의 그 점을 직접 설정하면 된다.
try this

var 
  BaseLine:Integer;
begin
  with ClientDataSet1 do
  begin
    BaseLine:=SavePoint;
    Insert;
    FieldByName('Name').AsString:= Edit1.Text;
    FieldByName('Weight').AsInteger:= StrToInt(Edit2.Text);
    if    then
      MergeChangeLog
    else //  
      SavePoint:=BaseLine;
  end;
end;

2.clientdaset은 데이터베이스에 연결하지 않고 직접 사용할 수 있습니다.clientdataset의 filename 속성을 설정하면 데이터 집합이 열리거나 닫힐 때 데이터 집합의 데이터를 대응하는 파일에 저장합니다. 이 과정은 로그를 통합합니다.그러니까 어떤 상태로 편집하고 다음에 열어도 어떤 상태인지.
3.mergechangelog; 델타의 조작 로그를 데이터와 통합하는 것입니다.
4.emptydataset, 데이터 세트를 비웁니다.
5. 3층 서비스의 구조 방법은clientdataset을 클라이언트에 놓고 socketconnect를 놓는다.웹연결 가능하지 않아요?그리고clientdataset의remoteserver를 socketserver로 가리키기;clientdataset의 데이터provider는 서버에 있는 데이터setprovider 서버에 데이터provider를 설치하면 됩니다.provide에 onrequest 명령이 있습니다. 클라이언트가 보낸 명령을 받아들일 수 있습니다.
6. 메모리 테이블 만들기:createdataset, 데이터 집합 만들기.
 //         
  with cdsDtl do
  begin
    with FieldDefs do
    begin
      Clear;
      //     
      Add('Num', ftString, 14, False);
      Add('Cls', ftString, 10, False);
      Add('Line', ftInteger, 0, False);
      Add('GDCode', ftString, 20, False);
      Add('sl', ftInteger, 0, False);
      Add('GID', ftInteger, 0, False);
      //ToDo         

      //    
      Add('GDName', ftString, 120, False);
      Add('Note', ftString, 255, False);
      Add('LSTINPRC', ftFloat, 0, False);
    end;
    IndexDefs.Add('','Line',[ixPrimary]);
    CreateDataSet;
    Append;
  end;
procedure TForm1.FormCreate(Sender: TObject);
begin
  self.ds1.FieldDefs.Add('Name',ftString,50);
  self.ds1.FieldDefs.Add('Age',ftString,50);
  self.ds1.CreateDataSet;
  self.ds2.FieldDefs.Add('Name',ftString,50);
  self.ds2.FieldDefs.Add('Age',ftString,50);
  self.ds2.CreateDataSet;
 
  self.ds1.AppendRecord(['100','100']);
  self.ds1.AppendRecord(['100','100']);
  self.ds1.AppendRecord(['100','100']);
  self.ds1.AppendRecord(['100','100']);
  self.ds1.AppendRecord(['100','100']);
  self.ds1.AppendRecord(['100','100']);
  self.ds2.Data:=self.ds1.Delta;
end;


procedure TForm1.btn1Click(Sender: TObject);
begin
  self.ds1.AppendRecord(['1001','100']);//     
  self.ds2.Data:=self.ds1.Delta;
end;

리비의 책, 시간 나면 읽어 보세요.
데이터를 제출할 때 applyupdates(-1,0.3)를 기억하세요. 각각 정상적으로 제출한 것입니다. 정상적이지 않은 것을 막론하고 0 오류는 3개의 오류를 허용합니다.
만약 내가 sql 문장을 통해 고객이 수정한 데이터를 업데이트하고 싶다면, 우리는 이렇게 할 수 있다
    ClientDataSet2, ClientDataSet2.Data=ClientDataSet1.Delta;
while not ClientDataSet2.Eof do
case  ClientDataSet2.UpdateStatus of
usDeleted:
XXX
원clientdataset의 로그를 다른 데이터 집합으로 복사한 다음 수정된 로그를 훑어보고 기록합니다.수정된 데이터를 찾을 수 있습니다.
Clientdataset는 수천 줄의 데이터를 처리하는 것이 여전히 빠르기 때문에 만 줄의 데이터를 처리하면 비교적 느리다.
ClientDataSet1.IndexFieldNames:='열 1;열 2';색인 추가
if ClientDataSet1.FindKey ([여기 뭐라고 쓰여 있습니까?, X]) then 찾기 필드입니다.
if ClientDataSet1.State in [DsEdit, DSInsert] then  ClientDataSet1.Post;
  if ClientDataSet1.ChangeCount > 0 then
    begin
    if ClientDataSet1.ApplyUpdates(0) = 0 then         ClientDataSet1.MergeChangeLog;
      end
    else
      abort;
    end
  else
    exit;
changecount에서 데이터 집합이 바뀌었는지 확인할 수 있습니다.

좋은 웹페이지 즐겨찾기