我试图通过使用查询导出表,然后我想从ms访问文件中删除该查询对象,但是它给我错误-无法更新Database.File可能是只读的。

我的代码如下

MsAcs.OpenCurrentDatabase(newdb,false,"");
 MsAcs.AutomationSecurity = Microsoft.Office.Core.MsoAutomationSecurity.msoAutomationSecurityForceDisable;
                        MsAcs.DoCmd.TransferText(Microsoft.Office.Interop.Access.AcTextTransferType.acExportDelim, Type.Missing, "tmpExport", csvfile, true, Type.Missing, Type.Missing);

MsAcs.DoCmd.DeleteObject(Microsoft.Office.Interop.Access.AcObjectType, "tmpExport");


给出错误

最佳答案

DeleteObject期望来自AcObjectType枚举的常量。
而不是完整的枚举(AcObjectType),请使用AcObjectType.acQuery作为DeleteObject的第一个参数,并使用查询名称作为第二个参数。

在Access应用程序会话中,可以使用以下两种方法之一删除名为tmpExport的查询:



DoCmd.DeleteObject acQuery, "tmpExport"
CurrentDb.QueryDefs.Delete "tmpExport"


但是,要使这两种方法都起作用,数据库必须是可更新的,而不是只读的。因此,当这些方法起作用时,Debug.Print CurrentDb.Updatable答复True

如果我以只读方式打开数据库,则CurrentDb.Updatable答复False,并且尝试删除tmpExport都会引发错误3027,“无法更新。数据库或对象是只读的”。

不幸的是,我不知道如何将这些语句转换为c#。

关于c# - 我如何使用DoCmd.DeleteObject删除MS Access查询对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14912176/

10-12 00:09
查看更多