什么是访问Microsoft Access的最佳途径Database
对象的属性 (如在CurrentDb.Properties
从C#在Visual Studio 2010)?
(不是必需的。其实我是想在“按需”几十个数据库摆脱复制的复制是不使用了几年,并于2013年访问2013拒绝与数据库,这是确定的MS Access之前特征。)
什么是访问Microsoft Access的最佳途径Database
对象的属性 (如在CurrentDb.Properties
从C#在Visual Studio 2010)?
(不是必需的。其实我是想在“按需”几十个数据库摆脱复制的复制是不使用了几年,并于2013年访问2013拒绝与数据库,这是确定的MS Access之前特征。)
可以遍历并通过修改Access数据库的属性访问DAO对象库 。
过在数据库中的属性以下代码遍历以及在不同的容器和它的属性,以及在所述文档和它的数据库中的容器的性质。 输出被写入到调试输出窗口。
之后,我选了一个Property
,从不同的属性集合和改变它的价值。 请注意,使用上集合索引将抛出一个异常,如果该属性不存在。
请确保您有用于Microsoft Office 12.0 Access数据库引擎对象库 (您的版本migth而不同)主Interop大会的参考,让你可以在你使用的语句如下:
using Microsoft.Office.Interop.Access.Dao;
你的方法是这样的:
// Open a database
var dbe = new DBEngine();
var db = dbe.OpenDatabase(@"C:\full\path\to\your\db\scratch.accdb");
// Show database properties
DumpProperties(db.Properties);
// show all containers
foreach (Container c in db.Containers)
{
Debug.WriteLine("{0}:{1}", c.Name, c.Owner);
DumpProperties(c.Properties);
}
//Show documents and properties for a specific container
foreach (Document d in db.Containers["Databases"].Documents)
{
Debug.WriteLine("--------- " + d.Name);
DumpProperties(d.Properties);
}
// set a property on the Database
Property prop = db.
Properties["NavPane Width"];
prop.Value = 300;
// set a property on the UserDefined document
Property userdefProp = db
.Containers["Databases"]
.Documents["UserDefined"]
.Properties["ReplicateProject"];
userdefProp.Value = true;
private static void DumpProperties(Properties props)
{
foreach (Property p in props)
{
object val = null;
try
{
val = (object)p.Value;
}
catch (Exception e)
{
val = e.Message;
}
Debug.WriteLine(
"{0} ({2}) = {1}",
p.Name,
val,
(DataTypeEnum) p.Type);
}
}
我用这克服了异常的动态类型被抛出(作为值属性原来是)