2012-03-16 3 views
14

이것은 어떤 것이 더 나은지에 대한 질문이 아니라 기능상 다른 점에 대한 질문입니다. 내가 겪었던 문제는 다루어졌지만, 왜 이런 행동이 일어나고 있는지 궁금합니다.ADO와 DAO의 차이점

배경 - Excel vba를 사용하여 Access 데이터베이스에서 데이터를 가져옵니다. 사용자가 단추를 클릭하면 Access에서 레코드 세트를 가져와 다양한 데이터를 스프레드 시트에 채 웁니다. 그런 다음 다른 쿼리에서 다른 레코드 집합을 가져와 스프레드 시트의 다른 부분을 채 웁니다.

ADO가 수행하는 작업 - ADO는 첫 번째 레코드 세트에 적합합니다. 그러나 두 번째 레코드 집합은 Access에서 쿼리로 이동하여 실행하고 행을 반환하지 않습니다. Access에서이 쿼리를 실행하면 약 3 ~ 4 초 후에 열립니다. 이 쿼리에는 여러 조인, 계산 된 항목, 한도 및 유니언 쿼리 (여러 가지 방법으로 시도했거나 조합 없음 등)이 있습니다. 나는 입양 연결을 닫고 다시 열어 보았습니다. 시간 제한 값을 변경하려고 시도해 보았습니다. 그리고 ADO 명령을 사용하여이 데이터에 대한 테이블 쿼리를 실행 한 다음 테이블에서 데이터를 가져와 테스트했습니다 (데이터가 지속적으로 변경되기 때문에이 방법으로 작업했지만 최선은 아님). , 그리고 누군가가이 도구를 사용할 때마다 make 테이블 쿼리를 실행하고 싶지는 않습니다.)

그래서 두 번째 데이터를 DAO로 변경하고 보았습니다. 작동합니다. 첫 번째 데이터 추출은 아직 ADO (일반적으로 사용하는 것을 선호 함)이지만 DAO로 바꾸는 것을 고려 중입니다. 코드에서 하나의 데이터 액세스 방법을 사용하기 때문입니다.

누군가가 왜 ADO가 한 가지 경우에 데이터를 가져 오지 않는지 설명 할 수 있습니까? 다시 말하지만 이것은 정보를 제공하기위한 것입니다.

+1

코드를 보지 않고도 의견을 말하기는 어렵지만 cusrsor 유형/레코드 세트 유형 문제 일 수 있습니다. 코드의 기본값을 사용합니까?Access에서만 작업하는 경우 DAO는 Access에 기본이며 ADO보다 제어하기 때문에 더 나은 선택입니다 – SWa

+2

와일드 카드를 사용하는 곳은 어디입니까? 이것은 일반적인 문제입니다. ADO의 경우 와일드 카드는 %이고 DAO는 (일반적으로) *입니다. – Fionnuala

+0

@Remou, 나는 둘 사이의 와일드 카드의 차이점에 대해 잘 알고 있지만 불행히도 쿼리에 사용하지는 않습니다. – APrough

답변

11

DAO는 Jet (Ms-Access) 데이터 테이블의 원시 데이터 액세스 방법입니다. ADO "Active X Data Objects"는 거의 모든 유형의 데이터베이스에 대한 산업 친화적 인 연결입니다.

표준 쿼리를 사용하면 DAO가없는 레코드를 ADO가 반환하지 않아도되는 이유는 없습니다. 또한 Access 데이터베이스 내의 항목과 관련된 매개 변수가 포함되어야한다고 생각합니다. 이 경우 ADO는 Excel에 대한 외부 참조이므로 DAO 메서드를 사용하면 Access가 아닌 Excel을 실행하여 쿼리를 실행하므로 해당 매개 변수를 사용할 수있는 옵션이 없기 때문에 ADO가 작동하지 않습니다. 자체 매개 변수/참조에 액세스 할 수 있어야합니다.

+1

+1 DAO는 ADO보다 더 나은 선택입니다. – SWa

+0

@Matt Donnan - 매개 변수가 문제가되지 않아야합니다. 두 쿼리 모두 사용하고 테이블로 변경 한 후에도 여전히 쿼리를 사용했습니다. 쿼리 프로세스가 너무 오래 걸리는 상황이 있습니다. 그러나 "DAO 방법을 사용하면 Excel이 아닌 쿼리를 실행하여 해당 매개 변수/참조에 액세스 할 수 있습니다."라는 귀하의 의견을 좋아합니다. 어쩌면 ADO가 Excel에서 쿼리를 처리하려고하는데 거기에서 길을 잃고 있습니까? – APrough

+0

@creamyegg 및 카일. 나는 DAO가 더 나은 선택 일지는 모르겠다.하지만 일반적으로 SQL Server에 대한 ADO를 사용하고, 습관이 점점 뜨거워지며, ADO를 사용하면 대부분 다음과 같은 문제가 발생할 때까지 괜찮습니다. P Oh 글쎄, 나는 지금부터 (이 유형의 프로젝트에서) DAO를 사용할 것이다. – APrough

3

나는이 질문이 이미 매우 잘 대답했다고 생각하지만 DAO와 ADO를 비교하기위한 또 다른 훌륭한 (찾기는 어렵지만) 리소스를 추가하고 싶다. 주로 액세스 양식 및 보고서가 포함 된 Access 응용 프로그램을 대상으로하지만 여기에 나온 정보는 Excel로 작성된 솔루션에 적용됩니다. ADO (ActiveX 데이터 개체), 원격 데이터 개체 (RDO), 및 데이터 액세스 개체 (DAO) : Visual Basic에서

UtterAccess Wiki Article: Choosing between ADO and ADO

1

는 3 개의 데이터 액세스 인터페이스를 통해 사용할 수 있습니다. 데이터 액세스 인터페이스는 데이터 액세스의 다양한 측면을 나타내는 개체 모델입니다. Visual Basic을 사용하면 모든 응용 프로그램에서 사용할 수 있도록 연결, 문 작성자 및 반환 된 데이터를 프로그래밍 방식으로 제어 할 수 있습니다.

Visual Basic에서 세 가지 데이터 액세스 인터페이스가있는 이유는 무엇입니까? 데이터 액세스 기술은 끊임없이 진화하고 있으며 세 인터페이스는 각각 다른 최신 기술을 나타냅니다. 최신은 RDO 또는 DAO보다 단순하지만 더 유연한 개체 모델을 특징으로하는 ADO입니다. 새 프로젝트의 경우 데이터 액세스 인터페이스로 ADO를 사용해야합니다.

+0

ADO는 더 이상 개발 중에 있지 않습니다. 링크 : http://www.utteraccess.com/ wiki/index.php/Choosing_between_DAO_and_ADO –