我继承了很多基本上是这样的代码:

dim dbs as dao.database
set dbs = currentdb()
dbs.execute "Some SQL string"
set dbs = nothing

是否有任何理由不将其重新编码为:
currentdb().execute "some  SQL string"

(我知道,如果我想使用.recordsaffected,currentdb()。recordsaffected不会产生可用的结果)。

除了简化代码之外,重新编码还有什么好处?

最佳答案

简单地使用CurrentDb.Whatever是一个诱人的捷径,但是在很多情况下,它会导致奇怪的行为。这是因为CurrentDb本身不是Object,而是返回当前Database对象副本的Function。

几年前,我无数次尝试调试CurrentDb,就像它是一个对象之后,我调试了我知道是“正确”的代码,这是...一旦我创建了正确的DAO.Database对象(Set cdb = CurrentDb)并使用了cdb.Whatever,的CurrentDb.Whatever

09-20 12:45