2011-12-05 6 views
0

my Access 2010 .adpファイルからストアドプロシージャにリンクされたレポートを呼び出すアクセスまたは.adpレポートから呼び出されたときに、SQL 2005のストアドプロシージャのフィルタまたはwhere句にエコーする/アクセスする。

例えば

DoCmd.OpenReport "r_my_report", acPreview, , "xxx=" & Chr(34) & xxx & Chr(34) 

はそれがwhere句またはフィルタパラメータをエコーし​​、ストアドプロシージャで、その上にいくつかのロジックを行うことは可能ですか?これらのパラメータは、使用できる方法でストアドプロシージャに渡されるのですか、または舞台裏でSQLエンジンに直接アクセスするだけでアクセスできますか?実行された実際のクエリをエコーし​​たりロギングしたりすることはできますか?

私はこれについて学習曲線を上げていますので、事前にお手伝いいただきありがとうございます。

答えて

0

アクセス.adpは、SQL Serverへのかなり直接的なインターフェイスを提供します.Adpに表示されるストアドプロシージャは、SQL Serverデータベース内の実際のストアドプロシージャです。

フィルタを使用したスト​​アドプロシージャに基づくレポートがあります。おそらく、ストアドプロシージャがそのパラメータで実行され、データセットがクライアントに渡され、そこでクライアントによってフィルタ処理されます。

ストアドプロシージャの代わりにビューを使用した場合、クエリがSQL Serverに変換されて渡された可能性があるため、サーバーのオプティマイザはwhere句のフィールドを含む実行を最適化する計画を立案しました。

サーバー上で何が起きているかを知るには、SQL Server Profilerを使用してください。これにより、いくつかの統計と共にサーバーに対して実行されるすべてのクエリの一覧が表示されます。あなたは、あなたが期待していた以上にアクセスが巧妙であることがわかります。

+0

where句がサーバーに渡され、サーバーが不要なデータをクライアントに返さないことを理解していましたか? – iewebguy

+0

SQLができないことの1つは、 'myfields FROM mystoredprocedure WHERE mycriteria = 1'です。ストアドプロシージャをパラメータ 'EXEC mystoredprocedure myparam1、myparam2'で実行する必要があります。ビューは、 'myfieldをmyview WHERE mycriteria = 1'から選択でき、その基準に基づいて最適化できるのとは異なります。 –

+0

ビューのパレメータ化されたクエリは、最適化と同じことを実現します。 – JeffO

関連する問題