4

私の制御下にない状況のため、Access 2000 MDB に格納される ACCESS クエリを開発する必要がありますが、Access 2000、2002、2003、2007、2010 のいずれかで開発できます。これらのクエリは (リンクされたテーブルを介して) MS SQL Server DB または Access 2000 .MDB ファイルのいずれか。

過去に、クエリが ANSI-92 と互換性がないという問題がありました。これは、[ツール|オプション] ダイアログの [テーブル/クエリ] タブでチェック ボックスをオンにすることで解決しました (2007 より古いバージョンの Access で)。

これらの Access アプリケーションの .MDB をさまざまなシステム間で移動しましたが、通常は問題はありません。

ただし、すべての内部結合で正常に機能するクエリを開発しましたが、結合の 1 つを外部結合に変更すると、Access 2010 で「無効な操作」エラーが発生してクエリが失敗します。 ANSI-92 チェックボックスがまだ設定されているかどうかを確認します。私はそれを見つけることができませんでした。

現在、Access 2003 以降では ANSI 92 構文が自動的に使用されることはわかっていますが、これらのクエリがこれに該当することを確認する方法があるかどうか疑問に思いました (むしろ特定の状況)。チェックボックスを変更すると、すべての「Like」クエリが「ALike」クエリになることがわかりました...

したがって、問題は、この状況ではANSI 92構文が完全に透過的であり、クエリが失敗する理由は別のものです...

ティア、パオロ

4

2 に答える 2

3

Access 2010では、SQLServer構文の互換性の設定は次のとおりです。

[ファイル]>[オプション]>[オブジェクトデザイナー]>[クエリデザイン]。

最初に、そのオプションが設定されているかどうかを確認して、クエリの動作が正常であるかどうかを確認する必要があります。

LIKEvsに関してALIKEは、後者はANSI方式で機能し%_パターンマッチングを使用します。
SQL-89互換モード(MS Access SQLサブセット)では、LIKEはパターン*とのみで機能し?ますが、互換性をSQL-92に変更する場合は、代わりに%とを使用してクエリを書き直す必要があります_

そのためALIKE、導入されました。選択した互換性レベルに関係なく、ANSI準拠のパターンを記述できます(SQL-92互換モードでは、どちらも同じように動作します)。

于 2011-06-17T07:48:51.840 に答える
-1

Access フロント エンドで ANSI 92 SQL モードを ON に設定する理由はありません。ただし、SQL Server ではなく Access で SQL を記述していることを忘れたい怠け者の SQL Server プログラマの場合を除きます。

これを行いたくない理由は、SQL Server バックエンドとの対話を強化するために実際には何もしていないのに、Access アプリケーションの内容を変更するためです。つまり、Access フロント エンドの SQL で SQL 89 ワイルドカードを使用する場合、ODBC ドライバーは、SQL をサーバーに送信するときに、SQL 92 ワイルドカードへの変換を処理します。唯一の例外はパススルー クエリですが、それらはサーバーのネイティブ SQL で記述されています。

于 2011-06-17T18:46:45.900 に答える