簡體   English   中英

如何通過C#程序修改MS Access數據庫屬性集合(而不是數據!)?

[英]How to modify MS Access database Properties collection (not data!) from a C# program?

在Visual Studio 2010中從C#訪問Microsoft Access Database對象的屬性 (如CurrentDb.Properties )的最佳方法是什么?

(不是必需的。其實我是想在“按需”幾十個數據庫擺脫復制的復制是不使用了幾年,並於2013年訪問2013拒絕與數據庫,這是確定的MS Access之前特征。)

您可以使用Access DAO對象庫遍歷和修改Access數據庫中的屬性。

以下代碼遍歷數據庫中的屬性,不同容器及其屬性以及數據庫容器中的文檔及其屬性。 輸出將寫入“調試輸出”窗口。

之后,我從不同的屬性集合中選擇一個Property ,然后更改其值。 請注意,如果屬性不存在,則在集合上使用索引器將引發異常。

確保您具有對Microsoft Office 12.0 Access數據庫引擎對象庫的主互操作程序集的引用(您的版本不同),以便您在using語句中具有以下內容:

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

我用來克服動態類型引發的異常(因為Value屬性原來是)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM