为什么在只更改.SQL属性时删除并重新创建querydef对象?

时间:2014-08-22 16:55:41

标签: vba ms-access

你还记得当天晚些时候link推荐删除现有查询然后动态重新创建它的古老的Microsoft Query by Form(QBF)VBA示例吗?:

On Error Resume Next
db.QueryDefs.Delete ("qryResults")
On Error GoTo 0

Set qdf = db.CreateQueryDef("qryResults", "SELECT p.*... 

为什么不直接更改querydef对象的SQL属性?

qdf.SQL = "SELECT p.*...

我想知道是否有人知道为什么MS工程师编写了一个示例,建议您删除然后重新创建查询而不是简单地更改SQL属性?我猜想随着时间的推移删除和重新创建对象的行为可能会导致前端的损坏和膨胀,更不用说更改SQL属性是如此简单。有没有人对此更深入了解?

1 个答案:

答案 0 :(得分:3)

你永远不应该质疑微软的智慧。微软永远不会犯错误。 :-)

好的,真正的答案。我强烈怀疑这是因为该文章最初是为Microsoft Access 2.0标准版编写的。我曾经使用过Access 2.0,并且有很多事情在当天无法完成。

至于最佳实践,我会说更改SQL属性。删除和重新创建对象将导致数据库膨胀,因为旧对象并未真正删除,只是标记为这样,直到您执行压缩。更改SQL属性不会创建新对象,只需更改它即可。