none
Access-VBAが実行時エラー'2465'で止まってしまう。 RRS feed

  • 質問

  • Access-VBAで実行時エラー’2465’が発生し止まってしまうというトラブルが起こり困っております。

    SQLサーバーにあるテーブルを読んでレポートへ書き出すだけの簡単なVBAなのですが解決策が見つかりません。

    どなたか解決策をご存じないでしょうか。

     

    エラーメッセージ:「実行時エラー’2465’:指定した式で参照されている’請求計’フィールドが見つかりません。」

     

    状況:

    1.同じテーブルのほかのフィールドは正しく処理される。

    2.レポートのコントロールのデータ・タブへ直接’請求計’フィールドを設定すると正しく表示される。

    3.ほかのテーブルとそれを表示するレポートでも同様のことが発生する。

      個々のフィールドの状況をデバッグツールで確認すると、この場合は約半数がエラーの状態で、残りは正しい値を

      示す。

     

    よろしくお願いいたします。

     

     

    2008年10月6日 7:16

回答

  • 解決しました。ありがとうございました。

     

    ご指摘の「受注額」の件ですが、コントロールソースを「受注額」としているコントロールが存在していました。ただし、そのコントロールの名前は「テキスト149」で「受注額」ではありませんでした。

    「受注額」をコントロールソースとするコントロールをレポート上に作り(非表示ですが)、テストしましたところ予定通りの結果を得られました。

     

    また、もう一つのレポートにつきましても調べてみましたところ次のような同様の結果が得られました。(デバッグツールでの検証)

    1.レポート上のコントロールのコントロールソースで使われていると正しい値が示される。

      (コントロールソース内の式で使われているだけでもOKでした)

    2.レポート上のコントロールのコントロールソースで使われていないとエラーとなるか正しい値が示されない。

      ほとんどのフィールドは「フィールドが見つかりません」のエラーとなりますが、一つのフィールドはNullを示して

      いました。

     

    迅速に対応していただきありがとうございました。

    2008年10月8日 0:42

すべての返信

  • こんにちは。フォーラムオペレータ大久保です。

    珍しく速いタイミングでフォローしてみます。。。

     

    おそらく、なにかのオブジェクト(フォーム、レポートなど)の、どこかのイベントプロシージャに VBA コードを書かれているのではないかと思いますが、どのオブジェクトのどんなイベントにどのようなコードを記載したか、教えていただけますか?

    「フォーム」の「明細セクション」にある「コマンドボタン」の「クリック時」イベント のように書いていただけるとわかりやすいです。

     

    あと、「請求計」というフィールドは、そのオブジェクトのどの部分にありますか?

    *「レポート」の「グループフッタ」 のように書いていただけると

     

    また、Accessのバージョンはいくつですか?ファイルの形式は?(mdb, adp, accdb などなど)

     

     

    よろしくお願いします

    2008年10月6日 8:25
  • 大久保さんよろしくお願いいたします。

     

    VBAコードを書いてある箇所ですが、「レポート」の「詳細セクション」の「Format時」イベントに書いています。

    フィールド「請求計」はレコードソースで指定している「テーブル」にあります。

     

    Accessのバージョンは2003(11.5614.5606)です。ファイルの形式はadpです。

     

    いかがでしょうか。

    2008年10月7日 0:28
  • レコードソースはテーブルを直接指定で、ビューとかを通してはいない ということで間違いないですか?

     

    「約半数がエラーの状態で」というのが、状況がよくわからないですね。他の約半数の項目でエラーが出ていますか?

    同じ項目でも、約半数のタイミングでエラーになったりならなかったりしますか?

    「請求計」だけは、何度やってもエラーになる ということですか?

     

    毎回必ず出るということであれば、フォーマット時イベントに書かれている実際の記述を教えていただければ、そこにヒントがあるかも。

    または、どうも挙動不審である場合、新しい adpを作って新しいレポートを作って(ウィザードでいいです)そちらで試してみていかがですか?

     

    ご確認ください。

    2008年10月7日 2:17
  • はい、テーブルを直接指定しております。

    使用しているテーブルはストアドプロシージャで作成した作業用テーブルで、作成の途中ではビューを読んでいます。

     

    「請求計」につきましては何度もテストしており同じ状態が続いております。

    レポート自体も再作成しましたし、「プロパティ/メソッドの一覧」から置き換えてみたりもしましたが状態は同じでした。

    もう一つのレポートについては繰り返してのテストは行っておりません。すみません。

     

    「請求計」を含んだレポートのコードをお知らせします。

     

    Private Sub 詳細_Format (Cancel As Integer, FormatCount As Integer)

    If IsNull(受注額) Then

    l_受注額 = 0

    Else

    l_受注額 = 受注額

    End If

    If IsNull(請求計) Then

    l_請求額 = 0

    Else

    l_請求額 = 請求計

    End If

    請求残高 = l_受注額 - l_請求額

    End Sub

     

    補足しますと、

    コードの中の「受注額」も同じテーブルから取っているのですが問題は起こしません。

    下の行の「請求計」が問題を起こします。If IsNull(請求計)の行でエラーとなります。

     

    もし必要であれば資料はPDFでお送りできますのでご連絡ください。

    2008年10月7日 4:15
  • 「受注額」 も、レポート上に同名のコントロールは存在しないんでしょうか?

    いま試してみましたところ、レポートのフォーマット時イベントでは、レコードソースに指定したテーブルの項目を直接参照はできませんでした。

    コントロールが存在しないと中身を参照できないようですね。

     

    請求計」フィールドを連結コントロールとして配置すればできると思います。(これはすでにお試しですよね)

    印字する必要がないのであれば、Visuble を false にする・コントロールの大きさをうんと小さくして隅に配置する などでいかがでしょう?

    2008年10月7日 5:00
  • 解決しました。ありがとうございました。

     

    ご指摘の「受注額」の件ですが、コントロールソースを「受注額」としているコントロールが存在していました。ただし、そのコントロールの名前は「テキスト149」で「受注額」ではありませんでした。

    「受注額」をコントロールソースとするコントロールをレポート上に作り(非表示ですが)、テストしましたところ予定通りの結果を得られました。

     

    また、もう一つのレポートにつきましても調べてみましたところ次のような同様の結果が得られました。(デバッグツールでの検証)

    1.レポート上のコントロールのコントロールソースで使われていると正しい値が示される。

      (コントロールソース内の式で使われているだけでもOKでした)

    2.レポート上のコントロールのコントロールソースで使われていないとエラーとなるか正しい値が示されない。

      ほとんどのフィールドは「フィールドが見つかりません」のエラーとなりますが、一つのフィールドはNullを示して

      いました。

     

    迅速に対応していただきありがとうございました。

    2008年10月8日 0:42
  • > ご指摘の「受注額」の件ですが、コントロールソースを「受注額」としているコントロールが存在していました。ただし、そのコントロールの名前は「テキスト149」で「受注額」ではありませんでした。

     

    なるほど、そういうことだったんですね!情報をありがとうございます。

    解決できてよかったです!

     

    で、誠に勝手で申し訳ないんですが、Acces初心者さんの返信投稿に「回答済み」チェックをつけさせていただきました。

    チェックがついている投稿のほうが、サイト内検索で上位にヒットしますので、この情報を見たいと思っている人にきちんと届きますので。

     

    それでは、また何かありましたらフォーラムをご利用ください!

    2008年10月8日 2:44
  • ほかの方の参考になれば幸いです。

     

    ただ、すみませんが一つ訂正があります。

     

    最後のメッセージでもう一つのレポートについて書きましたが、その中での「一つのフィールドはNullを示していました」との記述へは訂正が必要であることが判明しました。

    VBAでNull値を示していたフィールドの名称「請求額」と同じ名前のコントロールがレポート上にあったためでした。そのコントロールにはコントロールソースは指定してありませんでした。(非連結です) この件はこのコントロールの名前を変更して解決いたしました。

    以上、訂正させてください。

     

    参考:(太字の部分は削除が必要です)

    「また、もう一つのレポートにつきましても調べてみましたところ次のような同様の結果が得られました。(デバッグツールでの検証)

    1.レポート上のコントロールのコントロールソースで使われていると正しい値が示される。

      (コントロールソース内の式で使われているだけでもOKでした)

    2.レポート上のコントロールのコントロールソースで使われていないとエラーとなるか正しい値が示されない

      ほとんどのフィールドは「フィールドが見つかりません」のエラーとなります一つのフィールドはNullを示して

      いました。」

     

    2008年10月8日 4:17