【问题标题】:Is there any important difference between set dbs=currentdb() and using currentDB() directly?set dbs=currentdb() 和直接使用 currentDB() 之间有什么重要区别吗?
【发布时间】:2014-01-28 21:08:39
【问题描述】:

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

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

有什么理由不将其重新编码为:

currentdb().execute "some  SQL string"

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

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

【问题讨论】:

    标签: ms-access


    【解决方案1】:

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

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

    【讨论】:

    • 如果只使用它来设置记录集呢? IE。设置 rst = currentdb.openrecordset()...
    • @HelloW 对于生产代码,我总是创建一个适当的 DAO.Database 对象,无论其预期用途如何。偶尔对于“丢弃”代码我会变得懒惰并使用CurrentDb.Whatever,但在我看来这是一个坏习惯。在性能或代码可读性方面的任何假定收益实际上都可以忽略不计,并且由于在使用CurrentDb.Whatever 变得奇怪的情况下,我宁愿保持一致,而不必记住它何时工作以及何时不工作' t.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-09
    • 2013-02-20
    • 2013-09-13
    • 2017-04-05
    相关资源
    最近更新 更多