如何在MS Access中以编程方式更改querydef sql

时间:2010-05-09 14:41:53

标签: ms-access

我已经完成了

Dim qd as querydef
set qd = Querydefs("MyQuery")
qd.sql = "..."

在debug qd.sql中已经更新,但物理MyQuery仍然包含旧的sql。

如何更新此物理查询?

微软在这里给出的源代码 http://msdn.microsoft.com/en-us/library/bb177500.aspx

也不起作用。

2 个答案:

答案 0 :(得分:5)

除了对象外,不应使用SET。你需要QueryDefs的一个对象,所以:

Dim qd As QueryDef
Set qd = CurrentDb.QueryDefs("MyQuery")
qd.SQL = "SELECT Category FROM Categories"

确保SQL有效,否则会出错。

答案 1 :(得分:1)

我知道这是一个旧线程,但在我寻找类似问题的解决方案时发现了它。因此,出于同样原因找到此主题的任何人都可能会发现我的解决方案很有帮助。

在我的情况下,问题是由于使用工作空间begintrans / commitrans进行一系列操作查询,加上一些表单中显示的选择查询供用户在继续之前查看(使用带有query.nameofquery作为sourceobject的子表单) - 在运行committrans代码之前,querydef对象没有被更新。

嵌套Begintrans对我不起作用(因为我可能错过了一些东西)所以我不得不修改代码以首先完成所有确认,然后启动begintrans