• ベストアンサー
  • すぐに回答を!

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

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

共感・応援の気持ちを伝えよう!

  • 回答数4
  • 閲覧数1873
  • ありがとう数4

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

  • ベストアンサー
  • 回答No.4

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

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

関連するQ&A

  • Accessでのフォーム入力エラー

    顧客管理を 顧客マスタ 受注明細 入金明細のテーブルを作成し、リレーションシップの設定をしてあります。テーブルには、この形で入力できるのですが、フォームをウィザードを使って作成(サブフォームのリンクされたフォーム)しました。 新規入力することができません。「テーブル’顧客マスタ’にリレーションシップが設定されたレコードが必要なので、レコードの追加や変更をおこなうことはできません。」のメッセージが出ます。 どうしていいのか、わかりません。教えてください。

  • アクセス フィールド入力値での絞り込み

    アクセス初心者です。 現在、社員が取得した資格を管理するツールをアクセスで作成しようと考えています。 これまで、7つのテーブルを作成し、データ入力フォームを作成しました。 (1)資格取得日テーブル:いつ資格を取得したかを示す  【フィールド】取得ID(主キー)、取得社員、取得時部署、取得日 (2)取得資格テーブル:(1)において取得した資格を示す  【フィールド】取得ID、取得情報ID(主キー)、資格ID (3)資格マスタ  【フィールド】資格ID(主キー)、部署、資格分類、資格レベル、資格内容 (4)取得時の部署情報マスタ (5)社員情報マスタ (6)資格分類マスタ (7)資格レベルマスタ これまで、(1)をメインフォームとして、(2)をサブフォームとするフォームを作成し、 (2)の資格IDに対応する情報をサブフォーム上に表示させています。 資格IDを入力すると、残りの情報がコンボボックス(資格内容以外)とテキストボックス(資格内容)に表示されます。 これまでのところ、サブフォームから入力する際に、IDから入力しないと(3)の資格マスタに情報が追加されてしまいます。(ロックすれば良いのかもしれないですが) できれば、(3)で部署と資格分類と資格レベルを選ぶと対応する(3)の資格マスタのIDと資格内容が入力されるようにしたいと思っています。 何か解決策がありましたら教えていただければと思います。よろしくお願いします。

  • ACCESSでデーフル作成入力フォームで入力しながら、クエリのデータを参照したい

    ACCESSで売上明細テーブルを作成し、入力用のフォームを作成しました。他に顧客マスタテーブルがあります。売上明細には顧客CDフィールドがありますが、顧客名等はマスターに存在するため設けてません。しかし売上明細入力時に顧客CDを入力した時点で顧客名の確認がしたいのです。そこで入力フォームの顧客CDの隣に非連結でテキストボックスを作り、そこに顧客名を表示したいのです。売上明細には顧客名のフィールドは追加したくありません。ただ参照したいだけです。顧客マスタと売上明細で顧客CDをキーにクエリを作成し、明細に対応する顧客情報は顧客情報検索というクエリで作成済みです。入力フォーム画面の非連結のフィールドのプロパティのコントロールソースに =DLookup("[顧客名]","顧客情報検索","[顧客CD] =" _ & Forms![売上明細入力Form]![顧客CD]) と表記しましたがエラーになります。 最初はコントロールソースに直接顧客情報検索クエリの顧客名フィールドを表記し、フォーカス取得時にクエリを開くマクロを実行していました。でもやはり表示されませんでした。 顧客名の設定をどのように設定すればいいのですか? コントロールソースでの設定だけでは無理なのでしょうか? よろしくお願いします。

その他の回答 (3)

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

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

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

  • 回答No.2

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

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

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

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

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

関連するQ&A

  • アクセスフォームで2つを結合テキストボックス

    アクセス2000を使っています。 フォームで2つのテキストボックスの内容を並べて表示するテキストボックスを作成するには、どのようにコントロールソースに入力したら良いでしょうか? =[フィールド名]&[フィールド名] ではErrorやName?、「-1」などが表示されてしまいました。 (&の前後に半角空白を入れたりしました。) よろしくお願いいたします。

  • アクセス テーブル、クエリーについて

     アクセスでソフト作成中です。そこで教えてほしいことがあります。 たとえば下記のように2つのテーブルがあります。 テーブル1   テーブル2   フィールドA    フィールドB  a1       10  b1       20  c1       30          テーブル1の数値は固定します。そこで下記のようなクエリーを作成したいのです。 クエリー1 フィールドA フィールドB a1 10 b1 20 c1 30 テーブル2に数字を入れていくと テーブル1   テーブル2   フィールドA    フィールドB  a1       10  b1       20  c1       30           40 クエリー1 フィールドA フィールドB a1 40 b1 20 c1 30 このように数字が上書きされていくようなクエリーは作成できないでしょうか。(あくまでテーブル1の数値は固定、フィールドAとフィールドBにリレーションシップは設定されていない。) よろしくおねがいします。

  • アクセスのテキストボックスで

    質問の仕方が適切でないかもしれませんがご了承下さい。 Access2000を使用しています。 社員テーブルには「性別」フィールドがあり、男なら1、 女なら2が登録されています。その社員テーブルを基にした フォームを作成し、そこに非連結のテキストボックスを作成、 1なら男、2なら女と表示させたいのです。 新規登録時は「性別」フィールドに連結したテキストボックス の更新後に表示させるようなVBAを記述しておいたのでうまく いくのですが、登録済みのデータを呼び出した場合は表示され ません(更新しているわけではないので当然といえば当然なの でしょうが・・・)。 何かしなければいけないのは分かっているのですが、どのイベント 時にどのようなアクションをすればよいのか教えてください。 よろしくお願いします。

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

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

  • テキストボックスに文字が入力できない

    アクセス2007です。 フォームのテーブルに紐づいていないテキストボックス(非連結)に文字を入力しようとすると、エラーになります。 デザインビューのプロパティシートで、 IME入力モード:ひらがな にしているのに、いざフォームビューで文字を入力しようとすると、画像のようにエラーになってしまいます。 内容は、 「このフィールドに入力した値が正しくありません。 例えば、数値型のフィールドに文字列を入力しました」 です。 IMEの入力モードも、ひらがな入力になりません。 デザインビューのプロパティシートの「書式」は、標準になっています。 どういうことでしょうか?

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

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

  • 非連結のテキストボックスにフォーム値を元に表示する

    ACCESS2013です。 単体テーブル:受注 でフォームを作成しております。 最初は、3つ以上のテーブルをクエリーで作成して、それでフォームを作成しようと考えて いましたが、3つ以上のテーブルクエリーでフォームを作成すると、項目の編集ができません。 ダイナセットから矛盾ありの設定にすると、編集ができるようになりますが、各フィールド間 の連携が無くなってしまいます。 受注画面に店コードを入力すると、その店の該当エリア名を非連結のテキストボックスに 表示したいです。 マスタテーブルとして、  M_店(店コード、店名、エリアコード)  M_エリア(エリアコード、エリア名)   受注テーブル(受注No.、店コード・・・・) フォーム上の非連結テキストボックスのコントロールソースに設定できれば一番いいのですが。 どうぞ、よろしくお願いします。

  • アクセスでデータを分配するには

    フォームにテキストボックスが3つあり 企業名を入力するテキストボックスと 駅名を入力するテキストボックスが2つあり登録ボタンを 押下すればテーブルに2つレコードが作成されるようにしたいのですが どうすればいいのでしょうか? 例えばテキスト1の企業名に ●●商事 テキスト2の駅名に銀座 テキスト3の駅名に有楽町と入力し登録ボタンを押下すればテーブル のフィールド名、企業名に●●商事フィール名 駅名に銀座というデータともうひとつ とフィールド名、企業名に●●商事フィール名 駅名に有楽町というデータの2つのデータが テーブルに作成されるようにしたいのですが。。

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

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

  • アクセス2010の操作について

    こんばんは! アクセス2010を勉強しておりますが、さまざまの本を読んでもインターネットで検索しても、なかなか基本を理解できず又周囲にも質問できる人がいなく困っております。 以下の内容について数点の質問をさせて頂きますのでご指導をお願いいたします。 作成内容。 社員の成果を入力できるフォームを作成したく、保存したいデータは社員名、社員コード、成果です。社員名は、コンボボックスから選択を行いたい。(できれば社員名を表示すると、自動的に社員コードも表示したいのですが)以下の方法で作成したのですが、うまくできません(質問項目は下段です) ~作成の流れ~ 〇テーブルを作成・・・以下の2つのテーブルを作成し社員データを予め入力。 ・社員マスタ・・・・・・(フィールドは2つ)  「社員名」(テキスト型)  「社員コード」(テキスト型) ※主キー ・入力テーブル・・・・(フィールドは3つ)  「ID」(オートナンバー型)  「社員コード」(テキスト型)  「成果」(テキスト型) ※主キー 〇「社員マスタ」「入力テーブル」の2つのテーブルからクエリを作成。  ・社員コード同士を結合線で結ぶ(自動的に結ばれます)    (フィールド)  ID            社員名     社員コード   成果  (テーブル)   入力テーブル   社員マスタ  社員マスタ   入力テーブル 〇作成したクエリを基にフォームを作成  社員名をコンボボックスから選択できるように変更(値集合ソース→社員マスタ)  社員名をコンボボックスから選択し、社員コードを入力。成果を入力しようとすると。  入力できません。 (質問です)  (1)成果を入力するためにキーボードを押すと、文字が出ずにエラーメッセージ「レコードを追加でき ません。テーブル"入力テーブル"の結合キーがレコードセットにありません」と表示されますがなぜ でしょうか?  (2)、(1)でエラーメッセージが出ても保存を押すと、新規入力画面のコンボボックスに先ほどの入力 内容が追加されてしまうがなぜでしょうか?  (3)クエリとリレーションシップの使い分けの判断は?(今回はクエリから結合線で結びましたが、リレ ーションシップでも似たような事ができます)  (4)入力テーブルのフィールドは上記の3つでよろしいのでしょうか?  (5)このようなものを作成する時の手順を教えて頂けると非常に助かります。 よろしくお願いいたします。