- ベストアンサー
Access97→2000変換後にマクロが作動しない
Access97で作成したアプリケーションソフトをAccess2000に変換したところ、マクロのところがうまく作動しません。OSはXPです。 それもフォームを開く際に特定のレコードを指定するためのWhere条件式[コントロール名]=[Forms]![フォーム名]![コントロール名]を設定してあるのですが、ここがうまくゆきません。 すなわちAccess97だとこのマクロを実行するとコントロール名で数値を入力するように訊いてくるのですが、access2000変換後はいきなり数値入力されないで(=レコードを特定できないで)フォームが開くだけになってしまいます。 似たような別のマクロで、特定のレポートを開くマクロでは、この同じWhere条件式は、ちゃんと作動します。 なぜAcces97で作動するフォームのWhere条件式が、2000では作動しないのでしょうか? またこのような97→2000変換後の不具合はほかの部分でもおこるのでしょうか? 今のところ、動かした範囲では他の不具合は見あたらないのですが・・・ Accessのバージョンアップについて詳しい方、どなたかよろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#1です > 97では問題なく動作しているのです。 > しかし同じ設定でも2000ではうまくゆきません。 おそらくです 動作はするが、正しい記述ではないと、言うのが正解なのかもしれません Accは、ある程度、型の自動変換してくれます (自動的な解釈をね) その自動的な型変換に依存した場合、バージョンが異なる場合、移行がうまく行かないケースが、よくあった記憶があります もしくは、Acc2000は、かなり不安定なバージョンで、SRを当てたが、不具合が、たまにあると言う代物 これは、内部処理のUnicode移行、DAOから、ADOへの移行など、大幅に仕様変更したために、残った不具合だと思います ですので、私は・・・ Acc2000へ一度移行後、Acc97へ戻して、Acc2002へ移行しなおしてます (かなり昔の話ね) Accの安定してたかな?と、思うのは・・・ Acc2.0/Acc97/Acc2002/Acc2003/Acc2007 不安定で、どうにも・・・と思ったのは Acc1.0/Acc95/Acc2000 ですね 個人的な主観ですが・・・
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
もっと具体的に、フォーム・コントロール、Where条件式など実例を 挙げて質問すべきでは。 マクロはモジュールのVBAでなく、マクロなんですね。 Whereでは文字列・数字を比較するのだろうから、左右辺にVale,Textなどのプロパティにあたるものが要るのでは。 コントロールの何かさえ書いてない。読むほうは判らんよ。 また97で動いたという観念を捨ててチェックするべきでは。
- Dxak
- ベストアンサー率34% (510/1465)
> Where条件式[コントロール名]=[Forms]![フォーム名]![コントロール名] これは、普通、Acc97でも、Acc2000でも、動作しないと思うよ [レコードソースのフィールド名]=[Forms]![フォーム名]![コントロール名] なら、数値フィールドの場合、可能 コントロール同士比較しても、意味があるのやら・・・
補足
Dxakさま 有り難うございます。 私のここでの記述の仕方が間違っていたようです。Dxakさまが記載されたとおりだと思います。97では問題なく動作しているのです。 しかし同じ設定でも2000ではうまくゆきません。
お礼
Dxakさま、imogasiさま、追加のご回答有り難うございます。 お二人様のご回答を読ませていただき、思い当たることがありました。私が97で設定していたWhere条件式は、 [顧客ID]=[Forms]![フォーム名][顧客ID] となっており、左右辺に同じ[顧客ID]があります。つまり「別のフォーム」でなく、一つのフォーム上でレコードを特定する顧客ID(数値)を入力しておりました。Where条件式の定義を再度確認すると、「フォームのレコードを制限するための値を持つ、別のフォームのコントロール名を指定する」となっています。 なので、97の方でうまく動いていたのは、お二人様にご指摘いただいたように、たまたま97がうまく解釈しており、それが2000ではできなくなったのではないかと思いました。 そこでWhere条件式の基本に戻って、別フォームから顧客IDを入力するように作り変えればうまくゆきそうな気がいたします。今すぐにはできませんが、取り急ぎ良いご指摘を頂いたことをお礼申し上げます。有り難うございました。