• 締切済み

ACCESS2010のフォームとテーブルについて

取引会社ID同士をリレーションしています 問1.取引会社テーブルの「取引会社かな」も製品受注テーブルに表示させたいのです 問2.製品受注テーブルと同様のフォームを作っていきたいのですが    取引会社を選んだら自動的に取引会社かなも表示し、それを    製品受注テーブルに反映させたいのですが どうやればいいのですか? 漢字は、五十音順にできないため かなで五十音させようとしています(笑) どうか、よろしく願いします

みんなの回答

回答No.6

【お詫び】回答No.5は全面撤回します。 DLookup 関数を使って外部テーブルのフィールドの値を表示することもできますが、両側のテーブルから必要なフィールドをすべて含んだクエリを作成し、そのクエリに基づいてフォームやレポートを作成する方が効率的です。(Microsoft) 私がどんなにもっともそうな屁理屈をこねても真っ当なやり方は、「両側のテーブルから必要なフィールドをすべて含んだクエリを作成し、そのクエリに基づいてフォームやレポートを作成する」です。 以上の理由で回答No.5は撤回します。

回答No.5

【補足】受注履歴フォームと[取引会社_会社名]、[取引会社_読み]の表示 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)
回答No.4

テーブルデザインでルックアップ設定します 製品受注テーブルに取引会社IDと同じデータ型で「取引かな」を追加してこれにルックアップ設定します。 製品受注  製品受注ID  出荷済  製品工番  取引会社(取引会社IDを改名)  取引かな(取引会社IDと同じデータ型)  製品名 以下省略 テーブルのデザインビューで 【取引かなを追加】⇒【ルックアップタグ】⇒【表示コントロールの右端】 ⇒【コンボボックス】⇒【値集合ソースの右端の▼】⇒【取引会社を選択】 ⇒【列数を3】⇒【列幅に0,0】 同様の要領で取引会社IDに ⇒【列数を2】⇒【列幅に0】 とすると会社名が表示されます。

  • tamu1129
  • ベストアンサー率58% (1295/2223)
回答No.3

>それを製品受注テーブルに反映させたいのですが そういう事をする場合、製品受注テーブルに反映させるのではなく、作業を行っている時に参照テーブルの値を自動で表示してくれるようにして使うのです 具体的にはフォームを作成する時に、テーブルから作成するのではなく、取引会社テーブルと製品受注テーブルの2つのテーブルから作成したクエリを使います クエリを1つ新規に作成します 元になるデータとして、取引会社テーブルと製品受注テーブルの2つのテーブルをクエリに追加して、適当な名前を付けて保存 リレーションが正しく貼ってあれば、そのクエリを使ってフォームを作成すれば、製品受注テーブルの取引会社IDを入力すれば、該当するデータをフォーム上に配置されている取引会社テーブルの取引会社ID・取引会社・会社かな の部分にデータ表示してくれます 実際にはそのフォーム上に取引会社テーブルの取引会社ID・取引会社は必要ないのでしたら、フォームに配置されている取引会社テーブルの取引会社ID・取引会社部分は削除したフォームを利用すれば良いです 自分が持っていないデータでも他のテーブルとリレーションさせて使用するのがAccessなので、他のテーブルで持っているデータは自分のテーブルに重複してもたせるような事は行いません 必要なデータはリレーション張って参照させながら使います この部分はクエリで行いますので、テーブル作成ができるようになったらクエリ作成を覚えてください データベースでクエリが自由に使えるようになるとデータベースの活用ができます

  • -9L9-
  • ベストアンサー率44% (1088/2422)
回答No.2

問1.取引会社テーブルの「取引会社かな」も製品受注テーブルに表示させたいのです →テーブルというのはデータの入れ物のことです。製品受注テーブルには「取引会社かな」のフィールドはないのですからテーブルで表示させることはできません。表として表示させたいなら選択クエリを組んでください。 問2.製品受注テーブルと同様のフォームを作っていきたいのですが    取引会社を選んだら自動的に取引会社かなも表示し、それを    製品受注テーブルに反映させたいのですが どうやればいいのですか? →「取引会社を選んだら自動的に取引会社かなも表示」   問1に書いた通り、「製品受注テーブル」には「取引会社かな」フィールドがないのですから、「製品受注テーブルと同様のフォーム」に「取引会社かな」はあり得ません。 フォームに「取引会社かな」フィールドを表示させたいのなら、フォームのデザインで、「取引会社テーブル」の「取引会社かな」フィールドをコントロールとして貼り付ければいいだけのことでしょう。 →「それを製品受注テーブルに反映させたい」   問1に書いた通り、「製品受注テーブル」には「取引会社かな」フィールドが存在しないのですから、反映させようがありません。質問自体が意味不明です。 ※ アクセスの用語を理解していないように思われますが、アクセスはエクセルのように直感で扱うことは難しいソフトです。入門書などで用語や概念などをよく勉強してから使うべきだと思います。

回答No.1

問.取引会社テーブルの「取引会社かな」も製品受注テーブルに表示させたいのです。 普通は、そんなことはしません。なぜなら、「取引会社かな」(読み)は簡単に受注履歴と共に参照できるからです。 PS、参照方法は他の回答者に任せます。1996年を最後にAccessは扱っていませんので・・・。

関連するQ&A