テーブルtbl_Revenueから最低収入を見つける必要がありました。私は何をする二つの方法を発見した:"Min in Select文"またはDMin()。どれが望ましいですか?
方法1
Dim MinRevenueSQL As String
Dim rsMinRev As DAO.Recordset
MinRevenueSQL = "SELECT Min(tbl_Revenue.Revenue_Value)As MinRevenue FROM tbl_Revenue WHERE (((tbl_Revenue.Division_ID)=20) AND ((tbl_Revenue.Period_Type)='Annual'));"
Set rsMinRev = CurrentDb.OpenRecordset(MinRevenueSQL)
MinRev = rsMinRev!MinRevenue
方法2
MinRev2 = DMin("Revenue_Value", "tbl_Revenue", "(((tbl_Revenue.Division_ID)=20) AND ((tbl_Revenue.Period_Type)='Annual'))")
私は、次のような質問があります
は、そのうちの一つは、計算上、より効率的である- ? tbl_Revenueテーブルの代わりにジョインを使用した選択文があると、計算効率に大きな違いがありますか?
- DMinの資金提供の精度に問題はありますか? (正確には、DMinを使用する前に知っておく必要がある抜け穴があることを意味します)。
Set db = CurrentDbを使用するか、CurrentDbオブジェクトをどこでも使用するかどうか(なぜなら、それをCodeDBなどに変更する柔軟性が必要な場合を除きます)はどうでしょうか? OPはCurrentDBを使用しています。また、内部でCurrentDBオブジェクトを使用するのではなく、DMinが別の接続を開いていることをどのように知っていますか? – transistor1
*いくつかのケースでは、CurrentDbを使用すると正しく動作しないことがありました。特にそれを何度も参照したときには特に役に立ちました。しかし、率直に言って、詳細を覚えていません。私はそこに例があると思う:http://social.msdn.microsoft.com/Forums/en-US/accessdev/thread/7ea9506f-5e91-4896-80b9-6712762388ea/ –
+1非常に興味深い、リンクのおかげで+1。私はその特定の問題がなぜうまくいかず、OpenRecordset()を使ってそれを踏んだのかと疑問に思いました。私はCurrentDb()をオブジェクトとして考える傾向があることを認めなければなりませんが、私はそれが(IntelliSenseを介して)メソッドであることを知っていました。私は常に、CurrentDb()が毎回同じ参照を返すと誤って推測していました。 – transistor1