Microsoft Access 掲示板

Access64bit版だと、帳票フォームのテキストボックスに#Name?が表示されます / 3

12 コメント
views
4 フォロー
3
くろ 2021/08/30 (月) 17:47:58

mayu様、りんご様
コメントありがとうございます。

mayu様
おっしゃる通り、Me.をはずしたり Me!Data1.ControlSourceとしてみたり、
はたまた Me.Data1.ControlSource = "DATA1" など指定してみたりしましたが、
結果変わらず、テキストボックスの表示が #Name? となります。

Requery系については、少々複雑なコードでしたがそのような箇所がみあたらず、
また、これら指定の直後にPauseいれて確認したのですが、この指定直後にはすでに#Name?表示でした。
この時のControlSourceに指定した rs![data1].Name の値は期待通りの文字列で"DATA1"でした。
これも文字列として .ControlSource = "rs![DATA1]" としたり "[rs]![DATA1]"としたりして試したのですが変わらずで…
rs![data1].valueには正しくデータが見えるので、rsにデータが入っていないとか間違っているという事はありません。

りんご様
32bit版では問題なく動作しているコードですが、64bit版のAccessにおいてはその表示が#Name?となっています。
エラーは発生せず、表示が#Name?となるだけなのです。
rs にはSQLを発行した結果がすでに入っており、その抽出データをリスト表示させているものです。

64bit版Accessにおいては、.ControlSourceへの指定方法が変わったのかと思い検索しましたが良い情報もみつからず、諸先輩方に同一の経験をされた方がいらっしゃれば、と思い質問させていただきました。

通報 ...
  • 4
    mayu 2021/08/30 (月) 19:46:39 修正 ef559@a99f1 >> 3

    では、思いつく限りで あと4つほど提案してみます。
    以下のいずれでもダメだった場合、ちょっとお手上げですね。

    【 1 】

    循環参照という可能性も無くはないと思いますから
    その可能性も検証してみましょう。

    1. Data1, Data2 というコントロール名を Recordset のカラム名とは異なる名前に変更します。
       Data1 から Data_1 に変更
       Data2 から Data_2 に変更

    2. コントロールソースに値を代入する際、Recordset のカラム名を [ ] で括って
        オブジェクト名であることを明記します

    3. Me. ではなく、Forms("フォーム名").Controls("コントロール名") として
        Access が誤認識する余地を完全に無くします。
        ※ フォーム名はご自身の環境に合わせて下さいね。

    その結果、以下のようになるはずの

    Forms("フォーム名").Controls("Data_1").ControlSource = "[" & rs![data1].Name & "]"
    Forms("フォーム名").Controls("Data_2").ControlSource = "[" & rs![data2].Name & "]"
    

    といった記述でも #Name? になりますか。

    【 2 】

    ( くろさんから垣間見えるスキルからして、可能性は限りなく低いと見てはいますけど )
    フォーム名やテーブルの列名といったオブジェクト名において

    • 記号(アンダースコア除く)
    • 半角カナ
    • 全角英数

    といった怪しい文字を使っていたら、一旦全て半角英数に変更。

    【 3 】

    「 ファイル 」メニューから
     「 オプション 」→ 「 現在のデータベース 」と進み、
    「 名前の自動修正オプション 」にあるチェック項目を全て外す

    【 4 】

    新規の accdb を作成し、全てのオブジェクトをインポートしてみる