질문내용이 정확히 파악되지는 않지만... 대충 ClientDataSet 두개가 있고 하나에서만 Open한 다음 다른 ClientDataSet으로 데이타를 넘기려고 하는거죠?
만약 그런거라면 이렇게 해보세요.
// CDSDetail: Open한 원본 ClientDataSet
// CDSTmp: Data를 넘겨받을 ClientDataSet
var
l_Data: TMemoryStream;
begin
if CDSTmp.Active then CDSTmp.Close;
l_Data := TMemoryStream.Create;
try
CDSDetail.SaveToStream(l_Data);
CDSTmp.LoadFromStream(l_Data);
finally
l_Data.Free;
end;
섹시가이 님이 쓰신 글 :
: 델파이 2009 이상에서 상황은 이렇습니다.
:
: 콤포넌트는 DataSetProvider1 <- ClientDataSet1 <- DataSource1 <- Grid1 형태이며, 소스는
:
: cd := proxy.GetCustomers(); // tdataset 데이터로 넘오옵니다.
: // 아래는 이상없이 데이터를 출력해 줍니다.
: while not cd.eof do
: begin
: Memo1.Lines.add(cd.Fields[0].AsString+' : '+cd.Fields[1].AsString);
: cd.Next;
: end;
:
: // 이제 문제의 grid 로 넘기는 부분입니다.
: DataSetProvider1.DataSet := cd; // <- 이렇게 넘기면 안되는듯 합니다만..
: if not ClientDataSet1.Active then
: ClientDataSet1.Open
: else
: ClientDataSet1.Refresh;
:
: 설명이 좀 장황한거 같습니다. ^^;
:
: 결론적으로 제가 알고자 하는건 tdataset 데이터를 콤포넌트로 넘기지 않고 타이핑으로 grid 에 출력하는 방법입니다.
:
: 감사합니다. :)
|