オブジェクト変数の宣言、設定、呼び出し、および関連するクリーンアップの面倒な、おそらくは混乱を招くプロセスを実行するコード例が頻繁に見られます。それはその機能にプライベートです。MS Access VBA:オブジェクト変数は使用されていないときに宣言されているスコープを超えていますか?
これは本当に必要なのですか?完全なリファレンスを書くときにも同様ですか?
私は議論を聞いたことがあります。コードは読みやすく、速く動作します。前者は非常に主観的であり、後者は本当に気づいていない。
例;
Public Sub TransactionExample()
On Error GoTo trans_Err
DAO.DBEngine.BeginTrans
CurrentDb.Execute "SomeActionQuery", dbFailOnError
CurrentDb.Execute "SomeOtherActionQuery", dbFailOnError
DAO.DBEngine.CommitTrans
Exit Sub
trans_Err:
DAO.DBEngine.Rollback
MsgBox "Transaction failed. Error: " & Err.Description
End Sub
対
Public Sub TransactionExample()
Dim wrkSpaceVar As DAO.Workspace
Dim dbVar As DAO.Database
Set wrkSpaceVar = DBEngine(0)
Set dbVar = CurrentDb
On Error GoTo trans_Err
wrkSpaceVar.BeginTrans
dbVar.Execute "SomeActionQuery", dbFailOnError
dbVar.Execute "SomeOtherActionQuery", dbFailOnError
wrkSpaceVar.CommitTrans
trans_Exit:
wrkSpaceVar.Close
Set dbVar = Nothing
Set wrkSpaceVar = Nothing
Exit Sub
trans_Err:
wrkSpaceVar.Rollback
MsgBox "Transaction failed. Error: " & Err.Description
Resume trans_Exit
End Sub
私は "何も" への変数の設定についての質問ではないのです。彼らが必要なのかどうか尋ねています。そしてそれが価値があるものについては、必要な、提供された例の範囲内。
本当に必要なときがあります。特に、「CurrentDb」関数に関しては特にそうです。以下のコメントの関連する質問を参照してください。 –
可能な複製[set dbs = currentdb()とcurrentDB()を直接使用するのに重要な違いはありますか?](http://stackoverflow.com/q/21416876/2144390) –
リンクされた質問/回答は行っていませんあなたがここでやるよりも詳細な説明は、意見に基づくものであり、支持的な例はありません。 – tahwos