显示位(YesNo)数据类型为访问表中的复选框

本文关键字:访问表 复选框 数据类型 YesNo 显示 | 更新日期: 2023-09-27 18:18:10

在搜索如何以编程方式将访问数据库中的BIT (YESNO)列转换为复选框时,我发现一个可能的解决方案是通过使用DoCmd复制现有数据库的结构。我添加了对Microsoft.Office.Interop.Access的引用,并在我的代码中添加了这2行:

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:

这个操作需要一个打开的数据库。

有谁知道出了什么问题吗?

显示位(YesNo)数据类型为访问表中的复选框

我不懂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);
        }
    }
}