我需要從表tbl_Revenue中找到最低收入。我發現了兩種方法來做到這一點:「選擇語句中的最小值」或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 fundtion的準確性有問題嗎? (我的意思是說,在使用DMin之前我需要知道的任何漏洞)。
只是好奇 - 爲什麼無論你使用Set db = CurrentDb還是隻是在任何地方使用CurrentDb對象(除非你需要靈活地將其改爲CodeDB或其他東西)? OP使用CurrentDB。另外你怎麼知道DMin打開一個單獨的連接,而不是內部使用CurrentDB對象? – transistor1 2012-03-23 16:47:10
在某些情況下,我經歷過使用CurrentDb無法正常工作,特別是當您多次提及它時 - 但坦率地說,我不清楚這些細節。我認爲這裏有一個例子:http://social.msdn.microsoft.com/Forums/en-US/accessdev/thread/7ea9506f-5e91-4896-80b9-6712762388ea/ – 2012-03-23 16:58:00
+1非常有趣,感謝您的鏈接。我想知道爲什麼這個特定的問題沒有起作用,並且使用OpenRecordset()對它進行了側面調整。我必須承認我傾向於將CurrentDb()看作是一個對象,儘管我確實知道它是一種方法(通過IntelliSense)。我總是錯誤地認爲CurrentDb()每次都返回相同的引用。 – transistor1 2012-03-23 17:21:26