アクセスVBAでのテキストボックス入力値からの参照方法

このQ&Aのポイント
  • マイクロソフトアクセス初心者がアクセスVBAでテキストボックスの入力値を他のテキストボックスに参照する方法について教えてください。
  • リレーションシップを設定して『テーブルマスタ』から該当するデータを選択して『テーブル入力情報』に入力したいが、入力値が真っ白になりレポートにも反映されないという問題が発生します。
  • フィールドA=Me.テキストボックスBとして値を入力しているが、何か良い解決策はありますか?
回答を見る
  • ベストアンサー

アクセスVBA テキストボックス入力値からの参照

マイクロソフトアクセス初心者です。 現在、アクセスでデータベースを作成しています。 2つのフォーム(フォーム(1)、フォーム(2))、2つのテーブル(入力情報、マスタ)、2つのテーブルをもとにした1つのレポートを作成しています。 『フォーム(1)』のテキストボックスAに入力された値を、Dlookup関数で『フォーム(2)』のテキストボックスBに数値を参照しています。 『フォーム(2)』のテキストボックスに表示された値を、『フォーム(2)』に設置されたコマンドボタンをクリックすると、VBAで『テーブル入力情報』のフィールドAに入力されるようにしています。フィールドAについてのマスタとなるテーブルが『テーブルマスタ』です。 リレーションシップを設定せず、ただ単に値を入力することは出来るのですが、レポートを作成するにあたって、『テーブル入力情報』と『テーブルマスタ』のフィールドAに1(テーブルマスタ)対多(テーブル入力情報)のリレーションシップを設定したいと思っています。 リレーションシップを設定し、テキストボックスBに表示された数値を『テーブル入力情報』に入力する際、『テーブルマスタ』から該当するデータを選択して『テーブル入力情報』に入力されるようにしたいと思うのですが、現状では、リレーションシップを設定すると、入力値が真っ白になってしまい、レポートにも入力したデータが反映されません。 ちなみに、入力する際はフィールドA=Me.テキストボックスBのようにしています。 何か良い解決策がありましたら、是非教えていただけませんでしょうか? 分かり難い文章かと思いますが、どうぞ宜しくお願い申し上げます。

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.4

私とimogasiさんのツープラトン攻撃でさぞ落ち込んでいるかと思います (^^ゞ しかしながら、どこのサイトでも同様なレスがつくとおもいますよ。 さて #2ではっきりと分かったこと テーブルマスタ ID 主キー オートナンバー型 社員番号 長整数型??インデックスの設定は?? テーブル入力情報 社員番号 長整数型??インデックスの設定は?? テーブルマスタがマスターテーブルで、テーブル入力情報がトランザクションテーブル的な 感じですが、テーブル入力情報に社員ごとの詳しい情報が入っているのでしょうかね。 二つのテーブルの他のフィールドも含めたもっと詳しいフィールド定義が不明です!!!!! それぞれのテーブルに期待している『役割?、モノ』は何でしょう?! 2・3具体的なレコードの内容も示して欲しい。 フォーム(1)、フォーム(2) では分かりづらいので実際のフォーム名を示して貰いたいところ。 で、そのフォームのレコードソースは現状どうなっていますか。 回答者は傍にいて画面を見ているわけではありませんので、貴方が提示された「文字」だけが頼りです。 多分、簡単なことかと思われますが、誤解に基づく回答で解決されたように思えても 新たな難題が起こってくる場合もありえますので慎重になってしまいます。 おそらく前回の回答のメイン・サブフォーム間で社員番号で親子関係を設定すれば・・・ のような気がしますが。

nmiyu9130
質問者

お礼

丁寧にご回答いただいてありがとうございます。 あまり慣れていなくて…すみません。 もう少し情報と頭を整理してから、再度必要な事項については質問させていただきます。 ご回答いただいた事項は是非じっくり参考にさせていただきます。ありがとうございました。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

判りにくい文章です。こんな表現では、理解してもらえない書きかたです。 ●主語、修飾、目的語を同じ順序で記述すること。 >2)』のテキストボックスBに数値を参照しています。の「数値を」など読みにくい数値を先に持って来るべき。 >『フォーム(2)』のテキストボックスに表示された値を、『フォーム(2)』に設置されたコマンドボタンをクリックすると 、「『フォーム(2)』に設置されたコマンドボタンをクリックすると」が先に書くべきでしょう。 思いついた時点で文章語句を入れるとこうなる。 ●作業スッテップの前からあとに記述する。 ●箇条書きを使う。 ●例をAとかのように抽象的にしないで、具体的な例に置き換える。そうすれば読者の想像力で内容や必要性を補って理解できる場合が在る。例>数値をーー>何の数値?かを書くほうが良い場合が多い。 ●不必要な部分は書かない。来歴などは書かず、そこまでは所与のものとして、必要なところから記述を始める。 >『フォーム(1)』のテキストボックスAに入力された値を、Dlookup関数で『フォーム(2)』のテキストボックスBに数値を参照しています など質問に書く必要は無いのではないですか。 ーー ●フォーム1とフォーム2の関連が良くわからない。 ●テーブル入力情報』はテーブルか。突然出てきている。 ●フィールドAについてのマスタとなるテーブルが『テーブルマスタ』です。 これも書く必要があるのかな。「何々をキーとして、YYテーブルから、XXデータを採ってきています」などの方がわかりやすいのでは。 前段だけでも以上の疑問が湧いた。 ーー リレーションシップ以下は具体例でも挙げて説明が必要。 ーー 全般に、データの完成までの流れを明確にすること。 必要なテーブルやクエリ・フォームの役割は前段に、前もって、あらかじめ簡単に記述しておくと判りやすい。 例 社員テーブルー>社員名と社員番号と入射年月が入っています 社員クエリーー>入社年を指定して対象者を抽出、などのように。本質門ではそれがない。 A(入力)ーー>Bを参照ーー>Cを決定ーー>Dテーブルと結合ーー>条件Dで抽出ーー>Eにセット のように === もう一度質問分を練り直し、別質問すべきと思う。 ーー アクセスの質問に回答をするとき、回答者としてのデータ例の作り方に苦労(時間をとられる)する。それと同じことで質問者側にも苦労して、記述を反省し説明を心がけてほしい。

nmiyu9130
質問者

お礼

ご指摘いただきありがとうございます。 確かにご指摘の通りだと思います。 今後気をつけるように致します。

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

二三度読み返してみましたが・・脳みそが拒否反応を示してしまいました。。 二つのテーブルの構造と関連するキーが分かれば少しは何とかなるかも。 フォームも単票なのか帳票なのかで方法が変わってきます。 想像力を逞しくして、フォーム1・2でメインフォーム・サブフォームにして メイン・サブ間であるフィールドで親子関係を築くとか・・・。 レポートも似た様な感じで出来ませんかね。

nmiyu9130
質問者

お礼

ご回答いただいてありがとうございます。 分かりづらい説明ですみません。 『テーブル入力情報』には、社員番号のフィールドがあります。 フォームから『テーブル入力情報』に入力する社員番号は、 『テーブルマスタ』のID(主キー、オートナンバー型)に関連づけています。 『テーブルマスタ』はオートナンバー型のIDで管理していますが、同じく社員番号のフィールドがあります。 『テーブル入力情報』には、『テーブルマスタ』の社員番号のフィールドのデータを参照表示しています。 フォームからVBAを使って強制的に『テーブル入力情報』に社員番号の値を入力しています。 フォームは非連結のテキストボックスを保有しただけのフォームです。単票型?というのでしょうか。テーブルとは関係付けていません。 ただ、多分社員番号はIDで管理しているので、フォームから強制的に入力した時、上手くいかないのではないかなと思っています。 ルックアップウィザードで値を参照しただけだとテーブルに値を登録する際に値が表示されないし、参照整合性を設定するとリレーションシップが設定されたテーブルには入力できないというエラーが出るし…という感じです。 ちなみに、レポートには『テーブル入力情報』の内容を社員番号ごとに表示したいと思っています。そして、それぞれの社員番号について、『テーブルマスタ』の情報も表示させたいと思っています。 宜しくお願い申し上げます。

  • layy
  • ベストアンサー率23% (292/1222)
回答No.1

参考 レポートのソースをクエリということにしているかと思います。 http://www.accessclub.jp/bbs3/0212/superbeg68133.html No68133.「リレーションシップ設定」と「選択クエリ」の違いについて

nmiyu9130
質問者

お礼

選択クエリでフィールドを選択して表示するということでしょうか。 参考にさせていただきます。ありがとうございました。

関連するQ&A

  • Accessで、入力内容に応じたリスト参照をしたい

    いつも大変お世話になっております。m(_ _)m 質問させてください。 Accessで、入力内容に応じてあるフィールドで参照するリストを変更させたいのですが、難しい設定や記述が必要でしょうか? マスタテーブルに以下の情報を入れておきます 品名/値段 A・・・100円 A・・・200円 B・・・300円 B・・・400円 次に、別のテーブルを作成します そのテーブルには、「品名」「値段」を入力するわけですが 「値段」のフィールドには、リストボックス(またはコンボボックス)を設定しておき、「品名」を「A」と入れたら、「値段」のフィールドでリストボックスに表示される選択肢を「100円と200円」 品名を「B」と入力したら、リストボックスの選択肢は「300円と400円」というように、入力する値によって瞬間的に参照する値を変更したいのですが、可能でしょうか? できるだけ具体的に回答をお願いします。 お手数おかけします。よろしくお願いします。

  • ACCESSのテキストボックス内の任意の文字

    お世話になります。 宜しくお願い致します。 ACCESS2010についてになります。 [フォームA]の[テキストボックスa]に、ある文字が含まれていたら、[テーブルB]の[フィールドb]を検索して、[フィールド'c]の値を[フォームA]の[テキストボックス'a]に表示させたいと思います。 (例) 『信長』が入っていたら、検索結果を表示させる。 [フォームA] [テキストボックスa] 『徳川家康』 ⇒  検索しない。 『織田信成』 ⇒  検索しない。 『織田信長』 ⇒  [テーブルB][フィールドb]を検索する。 [テーブルB] [フィールドb] [フィールド'c] 明智光秀 あけちみつひで 織田信長 おだのぶなが ⇒ 結果を表示する。 [フォームA] [テキストボックス'a] おだのぶなが おわかり頂けますでしょうか。 上手く表現できずにすみません。 お手数ですが、ご教示頂ければと思います。 宜しく、お願い致します。

  • access vbaのテキストボックスについて

    例えば、sampleというテーブルがあり、そのテーブルは列A,列Bという構成だったとします。データとしては下記のようにします。  A  B 1 a1 b1 2 a2 b2 3 a3 b3 この時、フォーム上にテキストボックス1とテキストボックス2を作成し、コントロールソースにそれぞれsampleテーブルの列A、列Bを指定します。 このとき、3行目のデータ(a3とb3)を表示するときだけテキストボックスを太枠にすることは可能でしょうか? もしくは、他のテキストボックスと見栄え的に変えることは可能でしょうか? よろしくお願いします。

  • テキストボックスへの入力

    アクセス97にてソフト開発をしております フォームAの「合計」テキストボックスに表示されている数字を、フォームAを閉じたときにフォームBの「金額」テキストボックスに入力できるようにしたいのですが、 どの様にすればいいのでしょうか この二つのテキストボックスはODBCリンクテーブルと連結しています

  • テキストボックスにクエリ結果を表示させたい

    フォームにテキストボックスAがあり、そこに入力した文字(下記テーブルのフィールド1の文字)をクエリーの「抽出条件」にし、同じフォーム上のテキストボックスBに表示しようと思っています。 クエリを開くとパラメータの入力を求めてきて、入力するとうまく抽出されます。 テーブルは フィールド1|フィールド2   A   |  10   B   |  20   C   |  30   D   |  40 のような簡単なものです。 テキストボックスBのコントロールソースに 「=[○×クエリ]![フィールド2]とやっても「#Name?」と表示されてしまいます。 どのようにやればよいのでしょうか?

  • ACCESSのフォーム内のテキストボックスのコントロールソース

    ACECESSでフォームを作り、テキストボックスを作成します。次に、そのテキストボックスへテーブルAのデータBを割り当てたとします。このとき、このテキストボックスに、テーブルAのデータBが割り当てられている事を確実に知る方法はありますでしょうか。 このテキストボックスのプロパティのコントロールソースを参照すると、データBが表示されますが、テーブルAの情報が表示されません。自分で作成したフォームについてはそれでも良いのですが、今回他の人が作成したフォームを見る必要があり、どのテーブルのどデータを割り当てているかを確実に知りたいのですが、その方法をご存じでしたら教えて下さい。

  • 【Access】 テキストボックスへの入力

    毎回お世話になっております。 現在、フォームの編集をしております。 フォームはヘッダー部分と詳細部分に分かれており、ヘッダーの部分に「テキストボックスAに取引先コードを入力し、検索ボタンを押すと、同ヘッダーのテキストボックスBに該当する取引先情報が表示される」仕組みになっています。 詳細の部分には、新規の顧客情報を入力するテキストボックスが並んでおり、各レコードをテーブルに保存できるようになっています。 現在解決したい点なのですが、ヘッダーのテキストボックスBに表示された取引先情報を、ボタンを押す等の何らかの方法で、詳細の中のテキストボックスCに入力されるような仕組みが出来れば、と考えております。 (テキストボックスCのコントロールソースを変更する方法も考えましたが、各項目のソースはクエリとリンクしているので、この方法は止めました。) アイディアをお持ちの方、アドバイスを頂けますと幸甚です。 宜しくお願いします。

  • ACCESS2007のテキストボックスでの入力規制

    access2007で開発を行っています。 フォーム上でテキストボックスを2個作成し(それぞれ A,B とします)、 Aを入力時にBを半角カタカナのみに自動設定したいです。お願いします。 IMEStatus関数を使用するのは分かっているのですが・・・

  • テキストボックスの入力抑制

    使用言語はVB.NETです。 フォームAのテキストボックスAに文字を入力し確定すると、 フォームBが起動、フォームBのテキストボックスには、 テキストボックスAで入力した内容が表示されており、それを 変更することはできない。 ただし、テキストボックスAに何も入力せずに起動した場合、 テキストボックスBの内容は書き換え可能、というようなものを 作りたいと思っています。 また、テキストボックスBを入力不可にするには、Enabled=False 以外の方法で行いたいのです。 例えば、テキストボックスAで1と入れた場合、テキストボックスBの 初期表示1をBSで消しても、違う値をいれても、常に1に表示が戻される、 というようなものにしたいのですが…。 上記のようなものを作るには、どのように処理を作っていけば 良いのでしょうか? サンプル的なコードを教えていただけるとありがたいです。 よろしくお願いします。

  • テキストボックスの入力で困っています

    アクセス2010で請求書を作成しています 請求データベースの入力フォーム上の(商品コード)テキストボックス(非連結)に入力して、その値を使い、Dlookupで商品コードデータベースから商品名を入力フォーム上の(商品名)テキストボックスに表示させています 商品コードデータベース上で商品コードを長整数型で設定してあります 商品コードには、40011などの整数型の範囲を超えたデータがあります いろいろな理由から、商品コードは主キーに設定せず、インクリメント型でもありません 入力フォーム上の(商品コード)テキストボックスに整数型の範囲(-32768から32767)なら正常に動作します しかし整数型の範囲を超えて入力すると、「このフィールドに入力した値が正しくありません」が表示され、先に進めません 申し訳ありませんが、何か打開策をお知らせいただけると幸いです

専門家に質問してみよう