2010-01-06 5 views
0

Windows 닷넷 응용 프로그램에서 MS Access 보고서를 열거하는 방법.개체 모델을 사용하여 .net에서 ms 액세스 보고서를 반복하는 방법

MS Access db에서 사용 가능한 보고서를 표시해야하는 목록 상자가 있습니다. 다음 코드를 시도했지만 아무것도 표시되지 않았습니다.

oAccess = GetAccessDBObject(DBLocation);        
Reports accessReports = oAccess.Reports; // oAccess.Reports.Count = 0!!! No data comes out here!!! 

.net에서 ms 액세스 보고서를 반복하는 방법은 무엇입니까?

답변

2

나는 C#에서이 예제를 시도하고 작동합니다. (당신은 물론, 프로젝트에 은 Microsoft Access 개체 라이브러리에 대한 참조를 추가해야합니다)

 Access.Application oAccess = new Access.Application(); 
     oAccess.OpenCurrentDatabase(@"D:\tmp\dbtest.mdb", false, ""); 
     Access.AllObjects reports = oAccess.CurrentProject.AllReports; 
     Console.WriteLine(reports.Count); 
     foreach (Access.AccessObject report in reports) 
     { 
      Console.WriteLine(report.Name); 
     } 

+0

여기서는 '보고서'클래스에 캐스트를 입력 할 수 없습니다 !! 극복하는 방법? – Dhana

+0

질문에 따라 수정 된 답변입니다. –

+0

이 솔루션을 사용하려면 시스템에 Access를 설치해야합니다. –

-1
foreach (Reports rprt in oAccess.Reports) 
{ 

listbox.items.Add(rprt); 
} 

// 면책 조항 : 내 머리 꼭대기에서 쓴다. 보고서 개체에 목록 상자에 이름을 표시하는 이름 속성이 있는지 잘 모르는 경우.

+0

문서에 따르면, 이는 이미 열려있는 보고서 만 제공합니다. 내 대답은 모든 보고서의 컬렉션을 얻는 방법을 참조하십시오. –

1

토니 Toews으로 Access가 설치되어 있지 않으면 자동화 할 수 없습니다. 이 SQL은 모든 시스템에서 작동합니다.

SELECT MSysObjects.Name 
    FROM MSysObjects 
    WHERE (((MSysObjects.Type)=-32764)) 
    ORDER BY MSysObjects.Name; 

그러나 사용 권한이 Jet/ACE 시스템 테이블에 액세스하는 방법에 영향을 미칠 수 있습니다.

또한 Access가없는 Access 보고서 목록으로 할 수있는 일은 많지 않습니다. 그러나 이것을 언급하는 것이 완성을 위해 좋았다고 생각했습니다.

관련 문제