ACCESS2000で作成したアプリケーションをどうしても97にバージョンを下げないと
いけなくなり、97に落としたのですが、下記のようなエラーが出て困っています。わかる方教えて下さい。お願いいたします。
docmd.close
docmd.OpenForm○○ →  ココでエラー
内容
「OpenFormのアクションはキャンセルされました
 オブジェクトのメゾットを実行しようとしましたが表示されたダイヤログボックスでキャンセルがクリックされました。(実行時エラー:2501)」
 

A 回答 (3件)

Access2000→Access97への変換時に注意しないといけないことは、オブジェクト等に設定した文字列ですね


これが相当にメンドくさい作業です(-"-;)

文字列によってこのようなエラーがでるのは、フォームとレポートのときのみです
他のテーブル・クエリ・マクロ・モジュールはすんなり変換できます
(?モジュールもコーディングによってはエラーがでたかも...)

で、自分がやった方法とはフォームとレポートを少しづつ変換していく方法ですね。
例えば、一気にデータベースを変換するのではなくて、Access2000にて新規データベースにフォームとレポートを2個か3個づつエクスポートしていき、それからAccess97に変換していきます。

変換後にエラーが出た場合にはAccess2000にて原因調査していきます。
Access2000にて正常に動作していたとしても変換時にエラーになる場合があります。
(別にAccess97で動作しないというわけではありません。正常に変換後に元の文字列に戻しても動作します。変換時になんかしらの原因で動作不良に陥ることがあります。)

冒頭でも申しましたように大抵の原因は文字列です。
どのような文字列がエラーになりやすいかとかは経験談なんですが、「文字列が短い」、「プログラムの予約語に似ている」とかがエラーになりやすいですね。

今回の件ですが、フォームを開くコマンドにてエラーが出ているということなので、その開く対象フォームが単独で開けるかをお試しください。
開けなければ、その対象フォームをAccess2000よりまた再変換を行って下さい。

長々と書いてしまいましたが、Access2000からAccess97に変換する作業は相当に労力がいる作業です。
動作しないところがあってもAccess97の方では、それを修正することは出来ません。
Access2000にて文字列の改善をはかり、また再変換を行うという手順しかないと思われます。
※すべての変換が終了後は、Access97とAccess2000の変換は両方向ともすんなりいくようになります。
地道に頑張りましょう。
    • good
    • 0
この回答へのお礼

ありがとうございました。色々あったので
大変返事が遅くなりました。

お礼日時:2002/09/19 12:00

開こうとしているフォームのオープン時イベントで


Cancel=Trueになっている可能性があると思います。
調べてみて下さい。
    • good
    • 0

何度か経験しましたが、○○がフォーム名ですよね。

名前が間違っていない場合、対象フォームを右クリックして「名前を変更」を選んで出てきた名前をコピーし、モジュール内に貼り付けるとうまく行きました。
恐らくUniCode絡みのバグのような気もします。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す

このQ&Aと関連する良く見られている質問

QMS ACCESS2000のVBAでDocmd.openformしてます

openform のパラメータのwhereconditionに、like演算子を使って、

「 フィールド名 like %文字% 」

というような指定をしたいのですが、上手くいきません。
演算子が無いとか、いろいろ言われてしまいます。
どのように記述すると、動作するでしょうか?

Aベストアンサー

> 「 フィールド名 like %文字% 」
Oracle系とはワイルドカードキャラクタが異なります。

フィールド名 like '*文字*' か
フィールド名 like "*文字*" を使用してください。

任意の文字列を表す場合の%は*、
任意の1文字を表す場合の_は? です。

QDoCmd.OpenFormパラメータが表示される

いつもお世話になっています。

DoCmd.OpenFormで条件に合致するフォームが開く以下のコードを作成して使っています。

Private Sub send_Click()
DoCmd.OpenForm "集計", acFormDS, , "[支所] =" & Me.支所 & " And [部署] =" & Me.部署, , acHidden
End Sub

[部署]はこれまで数値で表していましたが、テキストを使用することになりました。
上記のプロシージャを実行すると[部署] のところにパラメータが表示されて
入力すると指定の支所と部署のデータが表示されます。

別の質問で、テキスト型を検索する記述方法は教えていただいて解決したのですが、
パラメータを表示せずに上記の式に反映するにはどうしたらいいのでしょうか。
型は数値型からテキスト型に変更しています。

お力添えをお願いいたします。

Aベストアンサー

> " & Me.部署

'" & Me.部署 & "'

QACCESS VBA コマンドDoCmd.OpenFormの引数

2つの項目で主キーを構成するテーブルを定義しました。
この場合、VBA コマンドを使って登録画面を開く為の
コマンドの引数の指定方法がわかりません。

テーブル名: T運転手割当
1)W業務依頼日 <=主キー
2)W使用車両  <=主キー
3)W運転手番号


DoCmd.OpenFormの書式
■第4引数 WhereCondition/レコード抽出条件(省略可能)
テーブルやクエリと連結しているときのレコード抽出条件を指定します。

1)仮に主キーが1つの時、以下の表記で正常に表示されます。
'フォームを開く
DoCmd.OpenForm "F運転手割当登録", acNormal, , "W業務依頼日 = " & Me![lstWariate]


2)主キーが2つの時、以下の表記ではF運転手割当画面は表示されるのですが、
肝心のデータがセットされずに空白で表示されます。
'フォームを開く
DoCmd.OpenForm "F運転手割当登録", acNormal, , ("W業務依頼日 = " & Me![lstWariate]) & " And " & ("W使用車両 = " & Me![lstWariate])


[lstWariate]とは、データの検索画面で検索結果を表示するリストボックスの名称です。
検索結果から該当データを選択して、個別データの修正画面に移行したいのですが・・・。

Me![lstWariate]の表記が良くないのだと思うのですが、具体的な表記方法が分かりません。
よろしくお願いします。

2つの項目で主キーを構成するテーブルを定義しました。
この場合、VBA コマンドを使って登録画面を開く為の
コマンドの引数の指定方法がわかりません。

テーブル名: T運転手割当
1)W業務依頼日 <=主キー
2)W使用車両  <=主キー
3)W運転手番号


DoCmd.OpenFormの書式
■第4引数 WhereCondition/レコード抽出条件(省略可能)
テーブルやクエリと連結しているときのレコード抽出条件を指定します。

1)仮に主キーが1つの時、以下の表記で正常に表示されます。
'フォームを開く
DoCmd...続きを読む

Aベストアンサー

遅くなりましたが、以下の記述ではどうでしょうか?
(長すぎて、勝手に改行されていますが、一行にして試してください)

DoCmd.OpenForm "F運転手割当登録", acNormal, , "W業務依頼日 = " & CDate(Me![lstWariate].Column(0)) & " And " & "W使用車両 = " & Me![lstWariate].Column(1)

QAccess97におけるマクロのテキスト変換アクションについて

Access97においてマクロのデザインで
テキスト変換のアクションを選ぶと、
アクションの引数として 変換の種類という項目があります。

ある出来上がったマクロの話なんですが、
マクロのデザインでは 変換の種類は 「区切り記号付きエクスポート 」となっているのですが、
そのマクロを ツール→解析→データベース構造で解析を行うと
「固定長インポート」となっていました。
なぜこのようなことが起こるのでしょうか?
どちらが正しいのでしょうか?

Aベストアンサー

なぜ、そうなるのかは分かりませんが、マクロのデザインで指定した変換の種類が正しいです。実際に、其処で指定した動作をします。

ちなみに、マクロのデザインで指定した変換の種類と、、テーブル構造の解析で表示される変換の種類は以下のように対応しています。

デザイン -> 構造解析
区切り記号付きインポート -> 区切り記号付きインポート
固定長インポート -> 0
HTML インポート -> 2
区切り記号付きエクスポート -> 固定長インポート
固定長エクスポート -> 1
HTML エクスポート -> 固定長エクスポート
Word 差し込みデータ エクスポート -> HTML インポート
区切り記号付きリンク -> 7
固定長リンク -> 区切り記号付きエクスポート
HTML リンク -> 3

随分、無茶苦茶になりますが、一応コメント欄に書いておくと、「オブジェクトの定義」のプレビュー時に確認できます。

QACCESS 97 で OLEオブジェクトを操作できません

ハードディスククラッシュで新しいHDに再セットアップをしたのですが、ACCESS97でテーブルにビットマップを挿入した所
OLEオブジェクトを操作できません。
OLEサーバーが登録されていません。
OLEサーバーを再セットアップしてください。
とメッセージが表示しフィールドはOLEオブジェクトは空ですとなってしまいます。
以前何処を設定したのか覚えていなく困っています
方法をご存知の方よろしくお願い致します。

Aベストアンサー

OLEサーバーになりうる図形ソフト
例えばMicrosoft Photo Editorが組み込まれており
ファイルに関連付けられている必要があります


人気Q&Aランキング

おすすめ情報