• ベストアンサー

ACCESS フォームに入力した文字列と同じコントロール名の値を得たい

いつもお世話になっております。 どなたか、教えてください。 Aフォーム(単票)の当年月フィールド(非連結)に「200709」と入力 その後、Bフォームを開くと、 当年月数値フィールド(非連結)に”200709”と名前が付いているコントロール名の値をセットしたいと思っています。 Bフォームを開きながらAフォームの値を変えることはありません。 Bフォームを開く際の処理でも、当年月数値フィールドのコントロールソースの指定でも構いません。 よろしくお願いいたします。 (わかりづらい文章で申し訳ありません。)

質問者が選んだベストアンサー

  • ベストアンサー
noname#60992
noname#60992
回答No.3

200709というコントロールがどちらのフォームにあるのかがわかりませんが、 Forms!Bフォーム.Controls("200709") は Bフォーム.200709 と同じ意味です。 よって、 me.当年月数値フィールド=forms!Bフォーム名.Controls(me.当年月フィールド) とすることで目的は達せられると思います。 (エラー処理等一切していません。) しかしフォームからデータを拾うというのはシステムの構造上あまり良くないような気がします。  まあmdbとはいえ、せっかくデータベースを使っているので、テーブルから探してきましょう。  また、入力を行ったものから選択肢を選ぶというのも運用上良くないことが起こる可能性があります。(検索はかまいませんが) これもテーブルのデータをリストボックスなどに格納しその中から選ぶことによって間違いが少なくなります。

naopyong
質問者

お礼

ありがとうございました! 無事にできました。 感謝します!!

その他の回答 (2)

  • TYmamy
  • ベストアンサー率50% (1/2)
回答No.2

Bフォームのテキストボックスのデータのコントロールソースに =Forms!Aフォーム!当年月フィールド とすればいいと思います。 ただし、この時Aフォームが閉じていると、エラーになります。 そういう時は、モジュールで変数を宣言して、 そこに値を入れておくことになります。

naopyong
質問者

お礼

ありがとうございます。 しかし、表示したいものは当年月フィールドと同じコントロールの値です。 当年月に「200709」と入力したら、200709という名前のコントロールの 50,000(←例)を表示したいのです。

noname#140971
noname#140971
回答No.1

Const 当年月フィールドインデックス = 0 Private Sub コマンド0_Click() On Error Resume Next   If Len(Me.当年月フィールド & "") > 0 Then     DoCmd.OpenForm "frmB", acDesign, , , , acHidden     Forms("frmB").Controls(当年月フィールドインデックス).Name = Me.当年月フィールド     DoCmd.Close acForm, "frmB", acSaveYes     DoCmd.OpenForm "frmB"   Else     MsgBox "先に[当年月フィールド]を入力して下さい。"   End If End Sub Private Sub Form_Current()   MsgBox Me.Controls(0).Name End Sub 確実に mdb を壊す原因となりますので、この回答は採用しないで下さい。

naopyong
質問者

お礼

御回答ありがとうございます。 が、使わないほうがいいのですね。了解しました。

関連するQ&A

  • [Access]帳票フォームにて連続する非連結コントロールに個々の値を入れるには

    Accessにおいて。 帳票フォームの"詳細"に非連結のコントロール(例:テキストボックス)を配置し、それぞれ別々の値を持たせることは可能なのでしょうか? 例えば。 VBAにおいて、カレントレコードのAという値とBという値を計算し、その値を非連結のテキストボックスに挿入したとします。 単票フォームであれば、問題なくテキストボックスには計算後の値が表示されるわけですが…… 帳票フォームの場合では、"規定値"に計算式を入れたときと同様、先頭の値と同じものが連続するテキストボックスに表示されてしまいます。 これを回避し、計算後のデータを連続するテキストボックスにそれぞれの値として表示させるには、どのようにすればよいのでしょうか? もちろん、連結させたコントロールを使用すれば、問題はないのですが…… 状況によっては、これが行えた方が便利かと思い、質問させていただきます。 「帳票フォームでは不可能である」といった回答でもかまいません。 どうぞよろしくお願いいたします。

  • Accessで、親フィールドに子フィールドの値を入れたいのですが

    親フィールドの[テキストボックスA]に [テキストボックスB]-子フィールドのフッターにある[テキストボックスC] という式の値を表示させたいのですが。 Aのコントロールソースに = [B]-[子フィールド名].フォーム![C] と入力すると「#Name?」となり、「フォーム」を「Form」とすると空欄になるのですが、どこを直せばいいのでしょうか。 [B]は数値です。 [C]はsum関数が入っていて、普通に表示されてます。 宜しくおねがいします。

  • ACCESS 既存のテーブルのフィールド名をフォーム上のテキスト入力値に変更したい

    いつもお世話になっております。 既存のテーブルのフィールド名を、単票フォーム上の入力値に変更 したいと思っています。 例)Aテーブル 月1 月2   Bフォーム上のテキストA:200810 テキストB:200811   (結果)Aテーブル 2008 200811 (テーブルデザインでの変更ではなく、コマンドボタン押下時等で行いたい) どなたか、ご教示願います。

  • BarCode Controlに値を設定出来ない

    Microsoft Access2000で、ActiveXコントロールのMicrosoft BarCode Controlをレポートフォームに貼り付け、Valueプロパティに値を設定しようとしたところ、 「連結または非連結フレームはOLEオブジェクトがありません」 というメッセージが出てエラーになってしまいます。 これはどういう意味なのでしょうか? あるテーブルのバーコード(JAN13)のフィールドからデータを持ってきて、変数にいれて、その変数を使用してBarCodeコントロールに値を設定したいのですが、どういうふうにコードを書けばよいのでしょうか? よろしくお願いします。

  • Access 既に開いているフォームへの値渡し

    Access初心者です。 業務管理DBを作成し、行き詰ってしまいました。 どなたかアドバイスお願いいたします。 フォームA:  受付日付、担当、顧客情報、注文内容などそれぞれのマスタテーブルからおもなフィールドを  クエリで作成 フォームB:  顧客情報テーブルを単票で作成 注文受付時に顧客がリーピータでない場合、フォームAからコマンドボタン実行し、 フォームBを開き、顧客情報テーブルに新規登録します。  《AからBをOpen》 フォームBで顧客情報の新規登録完了後、コマンドボタンを押下し、 その値(顧客ID)をフォームAに渡したいのですが、うまくいきません。  《B→A 値引き渡し》 --------------- Private Sub cmd_BT_Click() DoCmd.OpenForm "フォームA", , , "顧客ID=" & Me.顧客ID End Sub --------------- 他のフォーム間 《A→C》 では、上記のコマンドで正常に動作することを確認できています。 フォームA側のプロパティなど調べましたが、見当がつきません。 こういう場合は、どのあたりを手掛かりに調べればよろしいのでしょうか。 キーワードなどなんでも結構です。 用語などまだ理解していないところはありますが、 なにとぞご教示願います。

  • Access2002で空白フィールドに同じ値を一発で入力したい

    度々お世話になっております。 ただいま、MDBのバージョンアップをしておりまして、あるテーブルに新規フィールドを作成し、かつそのフィールドに同じ値(デフォルト値)を入力しなければならなくなりました。 マクロとかを弄くってみたのですが、値の挿入はレポートやフォームが対象のようでうまく行きません。 基本的な技術なのかもしれませんが、うまく解決できる方法をご教授いただきたく存じます。 例) AテーブルにBフィールド(数値型)を追加(これは手動でやりました) Bフィールドの全てのレコードに「0」を代入したい (最初は手打ちでやろうかと思いましたが、何万件もありますので、一発で代入できればな、と・・・) よろしくお願いいたします。

  • アクセス フォームの設定

    テーブル【T-1】 フィールドA,主キー,数値型 フィールドB,テキスト型 フィールドC,テキスト型 フィールドD,テキスト型 フィールドE,テキスト型 フォーム【F-1】 テーブル【T-1】に入力用のフォーム,単票型 があります。 F-1でそれぞれのフィールドに対して入力スペースがあり(もちろんですが) A,B,C,D,Eと順番に入力していきます。 ここでエンターキーを押すと、次のレコードへ移るわけですが、 カーソルがEの位置にあるため、わざわざマウスでAの位置へ移動させないといけません。 同様に、入力項目がなく、A,B,Cと入力して次のレコードへ行くと、Cの位置にカーソルがあります。 これを、Aをホームポジションとして、次のレコードへ移ったときに 自動的にカーソルをAの位置にもってくるようにしたいのですが、 一体どうすればよろしいでしょうか?

  • ACCESS2000 VBA フォームのコントロールに値を転記

    <やりたいこと> 保存されているレコードのフィールド値を修正するために、修正用非連結フォームを開くとき、当該レコードの値を転記したい。 <できないこと> コンボボックスに値が転記できない。 (テキストボックスには値が転記できる。) Private Sub Form_Load() Dim Sql As String Sql = "SELECT* FROM T_履歴 WHERE NO.=" & Key & ";"  'KeyはPublic変数、別のフォームモジュール内で値が格納されている。  'Keyによって、レコードはひとつに絞られている。 Dim DB As ADODB.Connection Set DB = CurrentProject.Connection Dim RS As New ADODB.Recordset RS.Open Sql, DB, adOpenForwardOnly, adLockOptimistic, adCmdText Me!氏名combo = RS!氏名 ↑この式で思うような結果が得られない。  .Text .Value のプロパティを付加しても結果は同じ。  ACCESS97ではこのように コンボボックス名="値" で、  値が代入され、コンボのソースの中からその値が選ばれた状態になったのに…。  

  • アクセスのテーブルのレコードをひとつのフォームにすべて表示ししたい

    アクセス2002を使っています。 ひとつのテーブルに登録しているレコードの値(日付順のフィールドにより数値を入力たレコードです)をひとつの単票形式のフォームにすべて表示するようにしたいのですが、できますか? よろしくお願いします。

  • Accessのフォームを改ページしたい

    Access2002で、単票形式フォームで例えば、フィールドが10あるとすれば、5つ目くらいのフィールドでページを区切るようにしたくて、コントロールの間に「改ページ」コントロールを挿入したのですが、フォームビューで確認してもまったくかわりません。手元のテキスト(MOT+Access2000)では、「改ページ」コントロールを挿入するだけでPageUp、PageDownキーによりページを切り替えられると説明があるのですが・・・ だれかご存知の方、教えてくださいm(__)m