アプリ版:「スタンプのみでお礼する」機能のリリースについて

アクセス2003で質問です。
メインフォームM1 サブフォームS1 サブフォームコントロールSCTL1
S1のフィールド T1と定義している場合に
T1へサブフォームS1からオープンした別のフォームF1の値を代入したいのです。
マクロで値の代入の式を
アイテムに
[Forms]![M1]![SCTL1]![T1]
と記述してもプロパティまたはメソッドが正しくないというエラーが表示されます。
同じ記述でアクセス2000では出来ました。
どこが違うのか教えて下さい。

A 回答 (2件)

今の状況でもできると思いますが、何故なんでしょうか。


わかりませんが、

サブフォームコントロール「SCTL1」のソースオブジェクトはどうなってますか。

ソースオブジェクトがフォーム名「S1」になっているのなら、
正式には [Forms]![M1]![SCTL1].Form![T1] になるのですが、
ソースオブジェクトが、テーブルやクエリの場合は、
[Forms]![M1]![SCTL1]![T1]
でアクセスできます。

[Forms]![M1]![SCTL1]![T1]
でもフォームにアクセスできるので、
共通の書き方ということで、私は [Forms]![M1]![SCTL1]![T1] を覚えていました。

今実際に、2003/2007 で確認しても動きは大丈夫でした。
(フォームF1の方からT1へ値を代入するマクロは)

フォームM1をデザインビューで開いた後、
フォームF1でそのアイテムを指定する時、マクロ内式ビルダで、
フォーム→読み込まれたフォーム→M1→S1 と辿った時に、
真中に表示されるものに、「T1」はありますか。
あったら、T1をクリックし、貼り付けすると、
[Forms]![M1]![SCTL1].Form![T1]
に置き換わります。
辿る時には、ソースオブジェクト名が表示されるようです。
(貼り付けると、その部分がコントロール名に置き換わるようです)

T1が真中にあるのであれば、Form と同列に書けるということになると思いますので、
[Forms]![M1]![SCTL1]![T1] でもよいように思います。
(同列に <フォーム> があるので)

今一度、式ビルダを使って確認されてみてはいかがでしょうか。
もしくは、アイテムではなく、式の方がおかしいということはありませんか。

なお、確認したバージョンは XPPRO SP3 + Access 2003 (11,8166,8221) SP3 です
(最近は Update していませんが)

また、2003で新規にちっちゃい環境作って、設定してみてどうなりますか。
    • good
    • 0
この回答へのお礼

メインフォーム、サブフォームをデザインビューで開いて、
マクロの式ビルダで、組み込まれたフォームからフィールドT1を
参照して式を作ったら思う通りに出来ました。
(確かにサブフォーム名がコントロール名に変わりました。)
どうも有り難うございました。

お礼日時:2009/11/30 20:08

たぶんサブフォームの名前が違っていると思います。


サブフォーム自体のフォーム名ではなく、
メインフォームに貼り付けられたサブフォームの名前です。
    • good
    • 0

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