如何在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访问报告?
答案 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属性,以便在列表框中显示它的名字。