2

実行時に Jet データベースを作成し、最大 10 万件のレコードをインポートするアプリケーションを使用して、パフォーマンス上の理由からインデックス作成を利用できるようにします (Jet データベースを使用しない場合は 1 分、ほぼ 10 分かかります)。

データベースは Excel の ADO Extensibility を使用して作成され、すべて正常に動作します。ただし、Access フロントエンドで MDB ファイルを開くたびに問題が発生し、データベースの「修復」が自動的に開始されます。

The data is still fine after the "repair", however my main output query can not then be viewed in Access as it tells me it cannot represent the joins, and if I then view it in SQL the required joins are not there, and the query can no longer run. This still happens if I let it get "repaired" but do not open that query, i.e. it is the "repair" that breaks the query, not the act of trying to view it in Access. The funny thing about this is that I used the Access GUI query designer to construct the SQL as my life is too short to worry about it's crazy bracketing style, but it then later decides that it's too complex for itself??

Also, nothing else appears to be affected so I can only assume it's this one query it doesn't like.

私の修正はMDBを非表示にし、それを見ることができるユーザーに開かないようにアドバイスすることであるため、これは私にとって取引を妨げるものではありません.

ただし、データベースを開くことができて、そのように隠す必要がなかったら本当にいいと思います。したがって、私の質問は、MDB が自動的に「修復」されるのを防ぐ方法があるかどうかです。

ありがとう!

4

1 に答える 1

1

Microsoft Access は、Microsoft Access ユーザー インターフェイスに固有のテーブルがいくつか見つからないため、開いたときにファイルを "修復" しています。Microsoft.ACE.OLEDB.12.0 で OLEDB を使用して MDB ファイルを直接作成したため、これらのテーブルは存在せず、Access が MDB を初めて開いたときに作成する必要があります。これを回避するには、いくつかの方法があります。

1) MDB に .mdb 以外の名前を付けます。例: MyAccessDatabase.mad- これにより、Windows が Microsoft Access を使用してファイルを開くことができなくなります。

2) COM+ を使用して Microsoft Access のインスタンスを開き、.MDB ファイルを作成します。この .MDB ファイルには、必要なすべてのテーブルが存在するため、ファイルを修復する必要はありません。

参考までに、Microsoft Access がこの方法で修復が必要な MDB を開くと、すべての QueryDef オブジェクトで無効な SQL が検査され、必要に応じて修正されます。これが、「複雑な」クエリが壊れている理由です。

于 2012-08-28T17:28:09.683 に答える