次の記事は、JET のすべての使用 (DAO または OLEDB を介したクライアント アプリ内からを含む) に適用されますか?
http://support.microsoft.com/kb/275058
これは、JET 4.0 以降が Access MDB に関連するものに必須であることを意味しますか?
次の記事は、JET のすべての使用 (DAO または OLEDB を介したクライアント アプリ内からを含む) に適用されますか?
http://support.microsoft.com/kb/275058
これは、JET 4.0 以降が Access MDB に関連するものに必須であることを意味しますか?
残念ながら、KB 記事の表現は不十分です。それらが参照する SQL 92 構文は、OUTER 結合の ON 句に列以外の比較フィルターを追加する場合です (これは、QBE で表示できないことも意味します)。したがって、クエリ内のテーブルに対する標準の列比較を使用した標準の外部結合 (LEFT または RIGHT) は、Jet のすべてのバージョンで正常に機能します。Access が SQL ステートメントを正しく解釈しないのは、OUTER 結合の ON 句に列比較フィルター以外のもの ([Col] > 200 など) を追加しようとした場合です。
私は個人的にまさにこの問題に遭遇しました。つまり、標準 SQL であるからといって、Access が適切な結果を返すとは限りません。これは、多くの人が Access について不満を感じている多くのことの 1 つです。
補足最後の質問に答えると、いいえ、Access で開発されたアプリケーションのバックエンド ストレージ テクノロジとして Jet を使用することは必須ではありません。SQL Server またはその他のデータベース製品をバックエンド データベース ストアとして使用する Access ソリューションを作成できます。
ジェット エンジンに関するウィキペディアの記事では、違いや機能についてかなり詳細に説明されています。
編集:KBの記事を読み直したところ、問題はJet 4.0 ServicePack3以前にあると書かれています。これはずっと前に取って代わられたJetのバージョンです。Windows Updateがオンになっている、またはc以降に更新されたWindows2000以降のコンピュータはどこにも存在しないようにする必要があります。サービスパック3と同じくらい古いバージョンのJetが含まれている2002。コンピュータ上のJetのバージョンを確認するには、MSJET40.DLLを見つけます。ビルド番号は、サービスパック番号で始まります。このPCにはバージョン番号4.0.9511.0があるので、それがSP9です。
バージョン番号4.0.3XXX.X以前のMSJET40.DLLを使用している場合は、サービスパックの入手手順に従ってください。問題は解決されます。しかし、まだJet4.0SP3以前を搭載しているWindowsPCがかなりの数あるとは思いません。そして、WindowsUpdateで更新されていないPCだけがそれを持っている可能性があります。
元の回答:Jet4.0は1999年にAccess2000とともにリリースされました。これはWindows2000に含まれており、それ以降、すべてのバージョンのWindowsに含まれています。これはOSコンポーネントであるため(ADはAccessで使用されるものではなく、他のJetエンジンを使用しますが、Active Directoryデータストアとの対話に使用されます)。Jet 4.0はJetのフリーズバージョンであり、Windowsチーム(そのコードを所有している)によってこれ以上開発されることはありません。
Access 2007がリリースされたとき、Jetデータベースエンジンの新しいバージョンが作成され、Access開発チーム専用で、ACEと呼ばれていました。これは実際にはJet5.0(または、拡張機能のメジャー度によっては4.5)ですが、新しいファイル形式であるACCDBが導入されました。
あなたが引用した記事は、Access2002とAccess2003にのみ適用されると述べていますが、これはJet 4.0の問題であるため、Access 2000にも適用されると思います。同様に、Accessの外部からのJet4.0の使用にも適用されます。たとえば、OLEDBまたはODBC。
DAOはSQL92互換モードを使用できないため、DAOを介して問題が発生することはありません。OLEDBのJetドライバーは常にSQL92モードを使用するため、この問題は常にOLEDBで発生します。
ACEを使用してMDBを照会する場合に問題が回避されるかどうかは、私にはわかりません。
JETは、Accessが使用するデータベースエンジンです。言い換えれば、AccessはJETデータベースエンジン上に構築されたアプリです。(アクセスはJETを使用する必要はなく、SQLサーバーに直接接続することもできます。)
テクノロジに関係なく、.mdbファイルに対してクエリを実行する場合は常に、クエリを実行するのはJETエンジンです。
.mdbにアクセスするにはJETのバージョンが必要ですが、4.0にする必要があるかどうかは、.MDBファイルのバージョンと、回避する必要のある以前のバージョンに蔓延しているバグがあるかどうかによって異なります。ただし、一般的には、AccessMDBで最新のJETバージョンを使用することを期待する必要があります。
OUTER JOINは古いバージョンで機能します-言及されたバグは、WHERE句もある場合にのみ発生します。