• 締切済み

Access2003でのフォーム作成についての質問

アクセスの入力フォーム作成で2点、お尋ねしたいことがあります。 手持ちのCDに入っている曲を登録するデータベースを作っています。曲のデータが入った「Songs」テーブルには、曲名や演奏者、作者のデータが入っています。 作者は別にWriterというテーブルを作り、姓(Family_name)と名(First_name)というフィールドに登録してあります。 Songsにデータを入力する「入力」というフォームで作者名、作者姓というフィールドを作り、これをコンボボックスにして、それぞれのプロパティで値集合タイプを「テーブル/クエリ」とし、値集合ソースに 作者姓には SELECT Writer.Writer_ID, Writer.Family_Name FROM Writer ORDER BY [Family_Name]; 作者名には SELECT Writer.Writer_ID, Writer.First_Name, Writer.Family_Name FROM Writer WHERE (((Writer.Family_Name)=Forms!Songs入力!作者姓)) ORDER BY Writer.Family_Name, Writer.First_Name; と指定して見ました。 ところが、これではまず1曲目を入力したときには、作者姓も作者名もうまく行くのですが、次の曲に移り、作者が別になったときに、作者姓の方は上手く新しいものが表示できるのですが、作者名の方には前の入力で使った名前がそのまま残ってしまい、 新しい名前が入力できなくなります。どこを改善すればこの現象をなくせるでしょうか? 次は2つめです。曲を入力していると、1枚のアルバムは通常同じアーティストになります。そこで前のレコードで入力したアーティスト名がそのまま次の入力画面に残るようにしたいのですが、これはどうすればよいでしょうか。 以上2点です。よろしくお願いします。

みんなの回答

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.1

一点目はテーブル設計が間違っています 「Songs」テーブルにはWriter_IDだけを格納しFamily_nameやFirst_nameは格納しません 入門書等で正規化について勉強してください 2点目は Writer_IDの更新後にWriter_IDの規定値を書き換えます Private Sub Writer_ID_AfterUpdate() Me.Writer_ID.DefaultValue = Me.Writer_ID End Sub

addmoremusic
質問者

お礼

回答ありがとうございます。 正規化の件はわかってはいるのですが、カード型・DB時代から作ったデータがすでに3万件あり、Writerテーブルにも約5000名の人名が登録されているため、自分の利便性を考えて、そのままにしていました。Smithだけで23人もいて作者氏名を入力するときに名前が出てこないと、入力が大変しにくいのです。 2点目についてはWriter_IDではなくて演奏者のデータの意味だと理解してよろしいですね。早速やってみます。 また、正規化の件もこれを機に検討してみたいと思います。

関連するQ&A