2016-03-24 7 views
0

this article
比較表を表示します.RecordCountは他のどのメソッドよりも高速ですが、基準で使用できるかどうかは言及していません。基準でRecordCountを使用することは可能ですか

これは私の質問です。 .recordcountを基準に使用できますか?例えば、私は、レコードカウントが、ステータスが「PAID」に等しいインボイステーブルのレコード数を返すようにしたいだけです。それが可能なら、どうですか?

現在、私はあなたのテーブルがリンクされているとおりでRecordCountが基準事前

+0

なぜあなたはそれを試してみませんか? – blckbird

+0

申し訳ありません..言及するのを忘れました..可能なら、どうですか? (私はそれを試してみる方法がわかりません) – Wayne

+0

デザインやSQLのクエリに条件を追加することができます。これにより、必要な 'WHERE'節を制御することができます。クエリをレコードセットとして開きます。 – LiamH

答えて

1

おかげで使用できるのであれば、おそらくいずれかの方法を使用して、パフォーマンスを向上させることができ、それを行うには、レコードセットにfor loopsを使用しますが、その記事を見ていますしかし、Dcount関数は非常に簡単です:

PaidInvoiceCount = DCount("*", "InvoiceTable", "[Status] = 'PAID'") 

あなたが提供されたリンクのメソッドがテーブル定義だけのためのものであり、非常に高速です:

Public Function CountRecords() 

    Dim lngCount As Long 

    Debug.Print Timer 
    lngCount = OpenDatabase("d:\path\test.mdb").OpenRecordset("InvoiceTable").RecordCount 
    Debug.Print Timer 

End Function 

あなたは、レコードセットを使用するために、これを変更することができます。

Public Function CountRecords() 

    Dim rs   As DAO.Recordset 
    Dim lngCount As Long 

    Debug.Print Timer 
    Set rs = OpenDatabase("d:\path\test.mdb").OpenRecordset("Select * From InvoiceTable Where [Status] = 'PAID'", dbOpenSnapshot) 
    rs.MoveLast 
    lngCount = rsFilter.RecordCount 
    Debug.Print Timer 

    rs.Close 
    Set rs = Nothing 

End Function 

しかし、それはDcount関数よりも速く実行されません。

+0

私は単純さに同意しますが、記事はそれが.recordcountと比較して相対的に遅すぎることを示しています。 Dcountは7125822行をカウントするのに12秒かかりますが、記事によると.recordcountは同じ量を数えるのに0.1秒しかかかりません。 – Wayne

+0

ローカルテーブルの場合はyesです。しかし、あなたはあなたのアプリケーションをテーブルとバックエンドに分割しておらず、他のすべてのオブジェクトに目を向けるわけではありません。 – Gustav

+0

私は800000 +レコードを持つテーブルでテストを実行しました。非索引フィールドでのフィルタリングには2秒かかり、索引フィールドでは1秒かかりました。あなたは7mioを持っていますか?請求書? – Gustav

関連する問題