如何使用对象模型在.net中迭代ms访问报告

时间:2010-01-06 11:38:13

标签: ms-access

如何在Windows dot net应用程序中枚举MS Access报告。

我有一个列表框,应该显示MS Access数据库中的可用报告。试过以下代码,但没有显示任何内容。

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

如何在.net中迭代ms访问报告?

3 个答案:

答案 0 :(得分:2)

我在C#中尝试了这个例子并且它可以工作:

        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);
        }

(当然,您必须在项目中添加对 Microsoft Access对象库的引用。)

答案 1 :(得分:1)

正如Tony Toews所提到的,如果未安装Access,则无法自动执行。此SQL适用于任何系统:

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

但请注意,权限可能会妨碍访问Jet / ACE系统表。

此外,没有访问权限的Access报告列表,您无法做多少事情!但我认为完整性提到这一点很好。

答案 2 :(得分:-1)

foreach ( Reports rprt in oAccess.Reports )
{

 listbox.items.Add(rprt);
}

//免责声明:把它写在我的头顶,不知道Reports对象是否有一个name属性,以便在列表框中显示它的名字。