2014-11-25 16 views
-1

tcxgrid에서 볼 수있는 것을 얻는 가장 간단한 방법을 알고 싶습니다. 그러면 버튼을 클릭하면 레코드가 xml 파일로 저장됩니다.tcxgrid의 레코드를 xml 파일로 저장 - Delphi XE2

+0

알고있는 부분과 알지 못하는 부분은 무엇인가요? 당신은 지금까지 무엇을 시도 했습니까? –

+1

TcxGrid의 설명서를 보셨습니까? 간단한 구글 검색에서 적절한 이름의 ExportGridToXML 함수가있는 것으로 보입니다. 너 그거 해봤 니? 작동하지 않는거야? –

+0

지금까지 나는 버튼과 tcxgrid가있는 폼을 가지고 있는데, 데이터베이스의 테이블을보고있는 tadqueries를 사용하여 데이터베이스와 대화하고있는 데이터 모듈을 가지고있다. tcxgrid는 프로그램을 실행할 때 올바른 데이터를 표시합니다. 이게 도움이된다면 내가 어디 있는지 정확히 알 겠어. 더 이상의 도움을 많이 주시면 감사하겠습니다. – Sharpie

답변

2

ExportGridToXML 프로 시저를 사용할 때의 약간의 문제점은 상당히 숨겨진다는 것입니다. cxGridExportLink 장치를 사용 목록에 추가해야합니다.

uses 
    cxGridExportLink; 

procedure TForm1.SaveToXML1; 
var 
    FileName : String; 
begin 
    FileName := IncludeTrailingPathDelimiter(GetEnvironmentVariable('Temp')); 
    FileName := FileName + 'Grid.XML'; 
    ExportGridToXML(FileName, cxGrid1); 
end; 

그러면 XML 파일이 \ 사용자 [사용자 이름] \ appdata \ local \ Temp에 저장됩니다. 그리드에 열이있는 데이터 집합 필드 만 포함됩니다.이 필드는 원하는 것일 수도 있고 그렇지 않을 수도 있습니다.

아래 절차는 그리드를 건너 뛴 XML에 데이터 집합을 저장하고 cxGrid에 열이 있는지 여부에 관계없이 모든 데이터 집합의 필드에 대한 데이터 값을 저장하는 또 다른 방법을 보여줍니다. TDataSetProvider를 통해 임시 TClientDataSet에 데이터 세트의 데이터를 복사 한 다음 TClientDataSet의 내장 기능을 사용하여 데이터를 XML에 저장합니다. 그것은 전달 된 데이터 세트가 제 위치에있을 수있는 필터를 존중합니다.

procedure TForm1.SaveToXML2(DataSet : TDataSet); 
var 
    FileName : String; 
    DSP : TDataSetProvider; 
    CDS : TClientDataSet; 
begin 
    FileName := IncludeTrailingPathDelimiter(GetEnvironmentVariable('Temp')); 
    FileName := FileName + 'Grid2.XML'; 

    DSP := TDataSetProvider.Create(Self); 
    CDS := TClientDataSet.Create(Self); 

    try 
    DSP.DataSet := DataSet; 
    DSP.Name := 'TempProvider'; 
    CDS.ProviderName := DSP.Name; 
    DataSet.DisableControls; // otherwise you will see the source dataset scrolling 
    // if it's shown in a grid 
    CDS.Open; 
    CDS.SaveToFile(FileName, dfXML); 
    finally 
    DataSet.EnableControls; 
    CDS.Free; 
    DSP.Free; 
    end; 
end;