- ベストアンサー
ACCESS2000→ACCESS97に変換した際のエラー
ACCESS2000で作成したアプリケーションをどうしても97にバージョンを下げないと いけなくなり、97に落としたのですが、下記のようなエラーが出て困っています。わかる方教えて下さい。お願いいたします。 docmd.close docmd.OpenForm○○ → ココでエラー 内容 「OpenFormのアクションはキャンセルされました オブジェクトのメゾットを実行しようとしましたが表示されたダイヤログボックスでキャンセルがクリックされました。(実行時エラー:2501)」
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Access2000→Access97への変換時に注意しないといけないことは、オブジェクト等に設定した文字列ですね これが相当にメンドくさい作業です(-"-;) 文字列によってこのようなエラーがでるのは、フォームとレポートのときのみです 他のテーブル・クエリ・マクロ・モジュールはすんなり変換できます (?モジュールもコーディングによってはエラーがでたかも...) で、自分がやった方法とはフォームとレポートを少しづつ変換していく方法ですね。 例えば、一気にデータベースを変換するのではなくて、Access2000にて新規データベースにフォームとレポートを2個か3個づつエクスポートしていき、それからAccess97に変換していきます。 変換後にエラーが出た場合にはAccess2000にて原因調査していきます。 Access2000にて正常に動作していたとしても変換時にエラーになる場合があります。 (別にAccess97で動作しないというわけではありません。正常に変換後に元の文字列に戻しても動作します。変換時になんかしらの原因で動作不良に陥ることがあります。) 冒頭でも申しましたように大抵の原因は文字列です。 どのような文字列がエラーになりやすいかとかは経験談なんですが、「文字列が短い」、「プログラムの予約語に似ている」とかがエラーになりやすいですね。 今回の件ですが、フォームを開くコマンドにてエラーが出ているということなので、その開く対象フォームが単独で開けるかをお試しください。 開けなければ、その対象フォームをAccess2000よりまた再変換を行って下さい。 長々と書いてしまいましたが、Access2000からAccess97に変換する作業は相当に労力がいる作業です。 動作しないところがあってもAccess97の方では、それを修正することは出来ません。 Access2000にて文字列の改善をはかり、また再変換を行うという手順しかないと思われます。 ※すべての変換が終了後は、Access97とAccess2000の変換は両方向ともすんなりいくようになります。 地道に頑張りましょう。
その他の回答 (2)
開こうとしているフォームのオープン時イベントで Cancel=Trueになっている可能性があると思います。 調べてみて下さい。
何度か経験しましたが、○○がフォーム名ですよね。名前が間違っていない場合、対象フォームを右クリックして「名前を変更」を選んで出てきた名前をコピーし、モジュール内に貼り付けるとうまく行きました。 恐らくUniCode絡みのバグのような気もします。
お礼
ありがとうございました。色々あったので 大変返事が遅くなりました。