如果是,请检查是否存在查询 - 删除

时间:2014-04-21 18:23:38

标签: c# ms-access vsto

我有以下语法使用C#删除访问查询...但我如何判断查询是否存在?

DAO.Database dd;
DAO.DBEngine db = new DAO.DBEngine();
dd = db.OpenDatabase(path);
dd.QueryDefs.Delete(queryName);

我也尝试了这个 - 但是收到了编译错误'无法分配给' Equals'因为它是一个'方法组'

var qd = new DAO.QueryDef();
if (qd.Name.Equals = "Hello")
{
  dd.QueryDefs.Delete(queryName);
}

2 个答案:

答案 0 :(得分:1)

尝试此SQL查询:

SELECT * FROM MSysObjects
WHERE Name="MyQuery" AND Type=5

如果您获得结果,则查询存在。 Type = 5用于查询(至少在我查看的数据库中)。

答案 1 :(得分:0)

您可以遍历QueryDefs集合并检查是否找到它......

DAO.Database dd;
DAO.DBEngine db = new DAO.DBEngine();
dd = db.OpenDatabase(path);
bool found= false;
foreach(DAO.QueryDef qd in dd.QueryDefs)
{
   if (qd.Name == "Hello")
   {
        found = true;
   }
}
if (found)
{
   dd.QueryDefs.Delete(queryName);
}