- 締切済み
フォームで入力した内容をクエリに反映させる方法
Accessについて教えていただければと思います。 会社のシステムのデータベースにリンクし、Accessのツールを作っています。 複数のテーブルでクエリを作り、フォームに条件指定し表示させるところまで進んでいます。(DLookUpを使っています。) このフォームに、非連結のテキストボックスを追加し、条件入力で表示された内容に、テキストボックスで入力した内容を合わせ、テーブルもしくは、クエリに保存しておきたいのですが、うまくいきません。 構成は、 Aテーブル:伝票番号、得意先 Bテーブル:伝票番号、枝番、数量 ABクエリ:伝票番号、枝番、数量、得意先 Cフォーム:伝票番号+枝番を入力し、数量、得意先を表示 配送個口数をテキストボックスに入力 Cフォームのすべての項目をのちに呼び出せるように保存しておきたいのです。 配送個口数を入力すると、枝番に関係なく、同じ伝票番号〈複数〉に登録。という形は(一時)できたのですが、枝番で絞り込めず困っています。 VBAもあまり得意ではないので、わかりやすくご指導いただければと思います。 どれだけの情報が必要かも分からないので、とりあえず、この状態で投稿いたします。 長くなりましたが、よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
プログラムに出来ないはありません。 要は、<したくない>があるだけです。 で、<したくない>方法を以下に・・・。 A:リンクテーブル 伝票番号__得意先 _______1__鈴木様 B:リンクテーブル 伝票番号_枝番_______数量 _______1_________1__10 _______1_________2__20 C:非リンクテーブル 伝票番号_枝番_配送個口数 _______1___1___________1 _______1___2___________2 当然に[配送個口数]を格納する列を持つテーブルは必要です。 で、それはフロントエンド側に非リンクテーブルとして持たせることは可能。 クエリ1: 伝票番号_得意先_枝番_配送個口数_数量 _______1_鈴木様____1__________1___10 _______1_鈴木様____2__________2___20 SELECT B.伝票番号, A.得意先, B.枝番, C.配送個口数, B.数量 FROM (B LEFT JOIN C ON (B.枝番 = C.枝番) AND (B.伝票番号 = C.伝票番号)) LEFT JOIN A ON B.伝票番号 = A.伝票番号; 上のようなテーブル構成ですと、このようなクエリが可能になります。 で、入力フォームはウィザードで自動生成されます。 1、[得意先]は、伝票番号を入力すると自動参照されます。 (ですから、ロックします!) 2、[枝番][配送個口数][数量]は追加できます。 もちろん、非連結フォームでも可能でしょうが、かなりVBAコードを書くことに・・・。 で、こういう安直な方法ではダメでしょうか?
Aテーブル:伝票番号、得意先 Bテーブル:伝票番号、枝番、数量 ABクエリ:伝票番号、枝番、数量、得意先 Cフォーム:伝票番号+枝番を入力し、数量、得意先を表示 配送個口数をテキストボックスに入力 少し、テーブル名を変更してみます。 配送伝票標題:伝票番号、得意先 配送伝票明細:伝票番号、行番号、配送個口数、数量 で、[伝票番号]で2つのテーブルをリンク。 こうすれば、ウィザードでメインとサブフォームとが作成されます。 ========================================= 伝票番号:__[000000001] 得意先:____[鈴木様_________] ----------------------------------------- [行番号][配送個口数][数量] ----------------------------------------- [_____1][_________1][____1] [_____2][_________1][____1] [_____3][_________1][____1] ========================================= これって、普通の伝票入力の雛形ですね。 で、これを非連結フォームでやろうとすると、とてつもなく複雑です。
補足
アドバイスありがとうございます。 今回のアドバイスで、テーブル名を変更(配送個口数を含んだテーブルを作成)しているのですが、システムとリンクしているテーブルを使っているために、このような変更ができないのです。 テーブルを単独のクエリにし、配送個口数のフィールドを追加してみたのですが、うまくいきませんでした。(やり方が未熟なのか…) 今回のフォームは、「メインとサブ」という形ではなく、一明細(伝票番号+行のワンセット)ずつ処理できるものを作成する必要があったので、雛形は使えなかったのです。 VBAを使いこなせないと難しいのでしょうか…
補足
遅くなりましたが、 再度アドバイスありがとうございます。 なんとか、データの入力可能なクエリは作れました。 が、最後のフォームの作成で、なかなか思うように作成することができなく、悪戦苦闘しております。 一画面に、例えば3明細を表示させたい場合、連番ではなく、 (伝票番号-枝番)1-1と、3-2と、6-1のように、伝票を指定させ、明細を表示させたいのですが、自動作成のフォームを使うと、連番で出るか、指定した1つの明細しか出すことができません…。 どんどん自己嫌悪に陥ってしまっています・・・。 もう少し勉強をしてから取り組むレベルだったのでしょうか…。