ODBC 経由で Jet 4 DB に接続しています。Jet DB は、Oracle DB へのパススルー クエリを使用します。これはこれまでのところ機能しています (pt クエリに直接アクセスすることはできませんが、クエリでビューを作成するとうまくいきます)。
p-ts によって返されたデータのサブセットが必要です。パラメータが最適ですが、サポートされていません。
2 つの質問:
1) Jet は、いくつかの where 句を Oracle にプッシュできるようです。たとえば、10 万行を返すパススルー クエリがあります。単一の flitering 句 (例: "district = '1010'") を持つ pt のビューは非常に高速であるため、処理は Oracle で行われるようです。句をさらに追加すると、CPU 使用率が高い状態で数分間ループし、クロールまでクエリが遅くなる可能性があります。Jet 側で何が渡され、何が行われるかについてのドキュメントはありますか?
2) VBA/Access を使用して動的パススルー クエリを作成する方法に関するチュートリアルが多数あります。ODBC 経由でアクセスする Jet を使用して、これを行うこと (またはそのようなことを行うこと) は可能ですか?
ありがとうマーティン
編集: 不明瞭で申し訳ありません。
ODBC 経由で Jet データベースにアクセスするレポート ツールがあります。Jet データベースには、いくつかのデータと Oracle データベースへのいくつかのパススルー クエリが含まれています。典型的な使用例は、Jet と Oracle からのデータを使用して、特定の部門と特定の日付のレポートを生成することです。これは原則として非常にうまく機能します。
問題は、パススルー クエリにパラメーターを含めることができないことです。パススルー クエリはビューのように機能するため、「select * from pt_query where dep = 'a' and date = somedate」を実行するだけです。ただし、Jet は pt からすべての行を読み込み、クライアント側でフル スキャンを実行します。これは 10 万行のビューでは使用できないほど遅く、それを回避する方法を見つける必要があります。
いくつかの単純な選択では、Jet は Oracle に大変な作業をさせているようで、すべての行をロードしないため、私の質問 1.
それがうまくいかない場合は、Jet が特定の要求に対して Oracle から必要なデータのみをロードするように強制する方法を見つける必要があります。
Access VBA を介してポイントを変更できることはわかっていますが、ODBC を介してのみ接続するため、SQL を Jet に渡すことしかできず、vb API を呼び出すことはできません (SQL ステートメントで VB をインライン化できない限り)。