Отображать битовый тип (YesNo) как флажок в таблице доступа - PullRequest
0 голосов
/ 19 декабря 2011

При поиске, как программно конвертировать столбец BIT (YESNO) в базе данных доступа в флажок, я нашел возможное решение - скопировать структуру существующей базы данных с помощью DoCmd.Я добавил ссылку на Microsoft.Office.Interop.Access и добавил в свой код эти две строки:

using Access = Microsoft.Office.Interop.Access;    
Access.Application myAccessInstance = new Access.Application();

В блоке try, где я открываю соединение с моей базой данных, я выполняю Do.Cmd.TransferDatabase:

myAccessInstance.DoCmd.TransferDatabase(0, "Microsoft Access", "C:\\Users\\user\\Desktop\\Merge\\playlists.MDB", 0, "PlaylistNames",
                "PlaylistNamesCopy", true);

и я получаю System.Runtime.InteropServices.COMException:

Эта операция требует открытой базы данных.

Кто-нибудь знает, что идет не так?

1 Ответ

1 голос
/ 19 декабря 2011

Я не знаю C #, так что это грубый пример того, как установить поле (столбец) в таблице для отображения флажка, о чем я и думаю, что этот вопрос.

//Added reference to COM Microsoft DAO 3.6

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            DAO.DBEngine dbEng = new DAO.DBEngine(); 
            DAO.Workspace ws = dbEng.CreateWorkspace("", "admin", "", DAO.WorkspaceTypeEnum.dbUseJet); 
            DAO.Database db = ws.OpenDatabase("z:\\docs\\dbfrom.mdb", false, false, "");
            DAO.TableDef tdf = db.TableDefs["Test"];

            DAO.Field fld = tdf.Fields["AYesNo"];
            //dbInteger  3 
            //accheckbox  106 
            DAO.Property prp = fld.CreateProperty("DisplayControl", 3,106);
            fld.Properties.Append(prp);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...