gpt4 book ai didi

c# - 如何使用 DoCmd.DeleteObject 删除 ms Access 查询对象

转载 作者:太空宇宙 更新时间:2023-11-03 11:08:30 29 4
gpt4 key购买 nike

我正在尝试使用查询导出表,然后我想从 MS Access 文件中删除该查询对象,但它给我错误 - 无法更新数据库。文件可能是只读的。

下面是我的代码

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 应用程序 session 中,我可以使用以下两种方法之一删除名为 tmpExport 的查询:

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

但是,要使其中任何一个起作用,数据库必须是可更新的,而不是只读的。因此,当这些方法起作用时,Debug.Print CurrentDb.Updatable 回复 True

如果我以只读方式打开数据库,CurrentDb.Updatable 回复 False,并且尝试删除 tmpExport 会抛出错误 3027,< em>“无法更新。数据库或对象是只读的。”

不幸的是,我不知道如何将这些语句翻译成 C#。

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

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com