- 締切済み
ACCESS2010のフォームとテーブルについて
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
【お詫び】回答No.5は全面撤回します。 DLookup 関数を使って外部テーブルのフィールドの値を表示することもできますが、両側のテーブルから必要なフィールドをすべて含んだクエリを作成し、そのクエリに基づいてフォームやレポートを作成する方が効率的です。(Microsoft) 私がどんなにもっともそうな屁理屈をこねても真っ当なやり方は、「両側のテーブルから必要なフィールドをすべて含んだクエリを作成し、そのクエリに基づいてフォームやレポートを作成する」です。 以上の理由で回答No.5は撤回します。
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
【補足】受注履歴フォームと[取引会社_会社名]、[取引会社_読み]の表示 1、受注履歴フォームのレコードソース。 これには、いわゆるクエリを利用しないやり方がお薦め。 [受注履歴].レコードソース=SELECT * FROM 製品受注; と、素直に[製品受注]のデータを抽出するSQL文を書けば十分です。レコードソースには、[取引会社_会社名]、[取引会社_読み]等を含める必要ありません。 こういうやり方の利点は二つです。 (1)、フォームを素早く表示できます。 (2)、クエリの乱造を防げます。 2、レコードソースにないフィールドの値を表示するには・・・。 https://support.office.com/ja-jp/article/DLookup-%e9%96%a2%e6%95%b0-8896cb03-e31f-45d1-86db-bed10dca5937?ui=ja-JP&rs=ja-JP&ad=JP MicrosoftのいうDLookup()ですが、これには幾つかの制約があります。例えば、TOP1、ORDER BY DES、GROUP BY 節などが書けない、あるいは実行速度が遅いとか。しかし、<アプリケーションの開発にあたっては問題の多すぎるクエリは使用しない>。あるいは、フォームのレコードソースは<Simple is best!>を実践する上では利用して損のない関数です。 3、一番のお薦めはADOでDLookup()の代替関数を自作すること。 DLookup()の代替関数と言っても、それは10数分もあれば自作できます。決して、複雑で難しいそれではありません。 こんな感じで1996年頃は別テーブルの列を参照していましたよ。
- chayamati
- ベストアンサー率41% (260/624)
- tamu1129
- ベストアンサー率58% (1295/2223)
>それを製品受注テーブルに反映させたいのですが そういう事をする場合、製品受注テーブルに反映させるのではなく、作業を行っている時に参照テーブルの値を自動で表示してくれるようにして使うのです 具体的にはフォームを作成する時に、テーブルから作成するのではなく、取引会社テーブルと製品受注テーブルの2つのテーブルから作成したクエリを使います クエリを1つ新規に作成します 元になるデータとして、取引会社テーブルと製品受注テーブルの2つのテーブルをクエリに追加して、適当な名前を付けて保存 リレーションが正しく貼ってあれば、そのクエリを使ってフォームを作成すれば、製品受注テーブルの取引会社IDを入力すれば、該当するデータをフォーム上に配置されている取引会社テーブルの取引会社ID・取引会社・会社かな の部分にデータ表示してくれます 実際にはそのフォーム上に取引会社テーブルの取引会社ID・取引会社は必要ないのでしたら、フォームに配置されている取引会社テーブルの取引会社ID・取引会社部分は削除したフォームを利用すれば良いです 自分が持っていないデータでも他のテーブルとリレーションさせて使用するのがAccessなので、他のテーブルで持っているデータは自分のテーブルに重複してもたせるような事は行いません 必要なデータはリレーション張って参照させながら使います この部分はクエリで行いますので、テーブル作成ができるようになったらクエリ作成を覚えてください データベースでクエリが自由に使えるようになるとデータベースの活用ができます
- -9L9-
- ベストアンサー率44% (1088/2422)
問1.取引会社テーブルの「取引会社かな」も製品受注テーブルに表示させたいのです →テーブルというのはデータの入れ物のことです。製品受注テーブルには「取引会社かな」のフィールドはないのですからテーブルで表示させることはできません。表として表示させたいなら選択クエリを組んでください。 問2.製品受注テーブルと同様のフォームを作っていきたいのですが 取引会社を選んだら自動的に取引会社かなも表示し、それを 製品受注テーブルに反映させたいのですが どうやればいいのですか? →「取引会社を選んだら自動的に取引会社かなも表示」 問1に書いた通り、「製品受注テーブル」には「取引会社かな」フィールドがないのですから、「製品受注テーブルと同様のフォーム」に「取引会社かな」はあり得ません。 フォームに「取引会社かな」フィールドを表示させたいのなら、フォームのデザインで、「取引会社テーブル」の「取引会社かな」フィールドをコントロールとして貼り付ければいいだけのことでしょう。 →「それを製品受注テーブルに反映させたい」 問1に書いた通り、「製品受注テーブル」には「取引会社かな」フィールドが存在しないのですから、反映させようがありません。質問自体が意味不明です。 ※ アクセスの用語を理解していないように思われますが、アクセスはエクセルのように直感で扱うことは難しいソフトです。入門書などで用語や概念などをよく勉強してから使うべきだと思います。
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)