こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

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

投稿日時 - 2011-02-26 23:14:58

QNo.6552856

すぐに回答ほしいです

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

私とimogasiさんのツープラトン攻撃でさぞ落ち込んでいるかと思います (^^ゞ
しかしながら、どこのサイトでも同様なレスがつくとおもいますよ。
さて
#2ではっきりと分かったこと
テーブルマスタ
ID主キー オートナンバー型
社員番号長整数型??インデックスの設定は??

テーブル入力情報
社員番号長整数型??インデックスの設定は??

テーブルマスタがマスターテーブルで、テーブル入力情報がトランザクションテーブル的な
感じですが、テーブル入力情報に社員ごとの詳しい情報が入っているのでしょうかね。

二つのテーブルの他のフィールドも含めたもっと詳しいフィールド定義が不明です!!!!!
それぞれのテーブルに期待している『役割?、モノ』は何でしょう?!
2・3具体的なレコードの内容も示して欲しい。

フォーム(1)、フォーム(2) では分かりづらいので実際のフォーム名を示して貰いたいところ。
で、そのフォームのレコードソースは現状どうなっていますか。
回答者は傍にいて画面を見ているわけではありませんので、貴方が提示された「文字」だけが頼りです。
多分、簡単なことかと思われますが、誤解に基づく回答で解決されたように思えても
新たな難題が起こってくる場合もありえますので慎重になってしまいます。
おそらく前回の回答のメイン・サブフォーム間で社員番号で親子関係を設定すれば・・・
のような気がしますが。

投稿日時 - 2011-02-27 11:28:41

お礼

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

投稿日時 - 2011-02-27 12:29:21

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

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

投稿日時 - 2011-02-27 10:32:15

お礼

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

投稿日時 - 2011-02-27 10:49:29

ANo.2

二三度読み返してみましたが・・脳みそが拒否反応を示してしまいました。。
二つのテーブルの構造と関連するキーが分かれば少しは何とかなるかも。
フォームも単票なのか帳票なのかで方法が変わってきます。

想像力を逞しくして、フォーム1・2でメインフォーム・サブフォームにして
メイン・サブ間であるフィールドで親子関係を築くとか・・・。
レポートも似た様な感じで出来ませんかね。

投稿日時 - 2011-02-27 09:42:13

お礼

ご回答いただいてありがとうございます。
分かりづらい説明ですみません。

『テーブル入力情報』には、社員番号のフィールドがあります。
フォームから『テーブル入力情報』に入力する社員番号は、
『テーブルマスタ』のID(主キー、オートナンバー型)に関連づけています。
『テーブルマスタ』はオートナンバー型のIDで管理していますが、同じく社員番号のフィールドがあります。
『テーブル入力情報』には、『テーブルマスタ』の社員番号のフィールドのデータを参照表示しています。
フォームからVBAを使って強制的に『テーブル入力情報』に社員番号の値を入力しています。
フォームは非連結のテキストボックスを保有しただけのフォームです。単票型?というのでしょうか。テーブルとは関係付けていません。

ただ、多分社員番号はIDで管理しているので、フォームから強制的に入力した時、上手くいかないのではないかなと思っています。
ルックアップウィザードで値を参照しただけだとテーブルに値を登録する際に値が表示されないし、参照整合性を設定するとリレーションシップが設定されたテーブルには入力できないというエラーが出るし…という感じです。

ちなみに、レポートには『テーブル入力情報』の内容を社員番号ごとに表示したいと思っています。そして、それぞれの社員番号について、『テーブルマスタ』の情報も表示させたいと思っています。

宜しくお願い申し上げます。

投稿日時 - 2011-02-27 10:38:32

ANo.1

参考

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

投稿日時 - 2011-02-27 06:04:26

お礼

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

投稿日時 - 2011-02-27 08:23:25

あなたにオススメの質問