2011-10-18 3 views
1

경고 : 총 재 작성.ADODataset : XML (ADO 스키마의 DB에 미리 저장) 데이터를 임시 파일없이로드하는 방법은 무엇입니까?

시나리오 :

은 내가 TCustomADODataset 자손에 데이터베이스에서 일부 데이터를로드. 그런 다음이 데이터를 XML 임시 파일 (TCustomADODataset.SaveToFile 사용)에 저장하여 XML 데이터를 문자열로 가져 와서 데이터베이스 테이블에 텍스트 blob로 저장할 수있게했습니다.이 테이블은 내보내기 테이블입니다.

XML을 저장 한 프로그램과 다른 프로그램은 데이터를 가져와 내부의 요소를 표시하고 사용자가 기본 데이터베이스 스키마로 가져올 요소를 선택할 수 있도록합니다.

는 문제 :

위의 접근 방식의 문제는 TCustomADODataset가 LoadFromFile 메소드를 사용 있도록 임시 파일이 필요합니다.

데이터베이스 내보내기 테이블의 텍스트로 저장된 XML 데이터를 임시 파일이 필요없는 TCustomADODataset으로로드하는 다른 방법이 있습니까?

주 :

  • 있는 TClientDataset이 경우에서 옵션 없습니다.
+0

이제 나는 분명히 나타납니다. 이 의견을 답으로 입력하십시오. 내일 내가이 문제로 돌아와 토르의 코드를 테스트 해보자. 고맙습니다. –

+0

왜 downvotes? –

+0

말하기 어렵습니다. 어구가 상당히 복잡하기 때문일 수 있습니다. 내가 반대의 경우를 원한다고 처음 생각했다. 'LoadFromFile을 사용하지 않고 메모리에서 TClientDataset으로 데이터를 직접로드 할 수 있습니까?'와 같은 간단한 내용으로 단순화하고 해당 업데이트를 삭제하십시오. +1 그 사이에 :) – TLama

답변

8

체크 this 예제. 아마 정확히 당신이 찾고있는 것입니다. 이 예제의 RecordsetFromXML을 사용하면 레코드 집합을 TCustomADODataSet.Recordset 속성에 할당 할 수 있습니다.

+0

임시 파일없이 유일한 해결책을 보여준 것 같습니다. 잘 당신에게 현상금을 심하게 ... –

+1

고마워; btw, 나는 그 기사에서 코드가 가장 좋은 접근법이라고 생각한다. [TCustomADODataSet.LoadFromFile] (http://docwiki.embarcadero.com/VCL/en/ADODB.TCustomADODataSet.LoadFromFile)은 동일한 [Recordset.Open]을 사용하기 때문에 (http://msdn.microsoft.com/en-us/library/windows/desktop/ms675544%28v=vs.85%29.aspx) 메서드뿐만 아니라 [TCustomADODataSet.SaveToFile] (http : //docwiki.embarcadero. com/VCL/ko/ADODB.TCustomADODataSet.SaveToFile)은 [Recordset.Save] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms681501%28v=vs.85%29. aspx) 그들은 파일 대신 스트림을 사용하는 유일한 차이점이 있습니다. – TLama