• 締切済み

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

  • ACCESS2010_テーブル作成(超初心者)

    現在以下のようなテーブルを作成しています。 テーブル1:名前、区分 テーブル2:名前、区分、その他データ テーブル2の名前フィールドに名前を入力すると自動的に名前に対応する区分が自動入力されるようにしたいと思っていますが、やり方がよくわかりません。access初心者です。どうかご教授願えないでしょうか?よろしくお願い致します。 尚、名前の入力はテーブル1の名前から選択するようにしました。 表示コントロール:コンボボックス 値集合タイプ:テーブル/クリエ 値集合ソース:SELECT テーブル1.名前 FROM テーブル1 ORDER BY テーブル1.名前;

  • Accessのフォームについて教えて下さい

    Access 2010のフォームについてお教え下さい。 テーブルにはテーブル名T1、フィールド「ID」、「Price」というテキストボックス。2フィールドがあります。 テーブルの各データは、 ID,Price 001,100 002,200 003,300 フォームにはにフォーム名F1、「cmb」というコンボボックスと、「price」というテキストボックスが配置されています。 「cmb」のデータは値集合ソースで、「SELECT T1.ID FROM T1;」と指定しています。 「cmb」で選択したデータのプライスを「Price」テキストボックスに表示したいと思います。 例えば、「001」を選択したら、「100」と表示されるようにしたいと思います。 色々調べているのですが、どうやってやるのかわかりません。どのように実現したらよろしいでしょうか? よろしくお願いいたします。

  • access95でこんなフォームを作成したい!!

    access95でフォームを作成する場合に、元になるテーブルを複数指定する事はできますか? フォームはひとつで、入力するフィールドによってそれぞれ別のテーブルにデータが蓄積されるようにしたいんです。 どなたか分かる方、助けてください。

  • アクセス作成について

     アクセスについて質問します。  フォームで入力する場合で、例えばテーブルのレコードを100までとし、101を超えた場合またレコード1にデータを入力することは可能でしょうか。 テーブル フィールド1 フィールド2  1       6  2       8   .      .   .      . 100       55 フィールド1は固定し、フィールド2にデータを入力していき101番目にデータを入力する時はまた1行目の6を上書きしてデータを更新していくようなことは可能でしょうか。(もちろんフィールド1、フィールド2を別テーブルとしクエリーを活用することでもok) アクセス初心者です。よろしくおねがいします。

  • ACCESS フォーム作成について

    甲テーブルには三つのフィールドがABCが存在し、そのうちのCにはデータシート表示で、種別を表す1、2のオプション値が入ったものになります)。 この甲テーブルを元にフォーム作りたいのですが、Cフィールドをいわゆるオプションボタンのように表記させてフォーム入力時にどちらかのボタンに●を入れて使いやすくしたいものの、フォームウィザードで進めていく中でどこでオプションボタン編集可能になるのかわかりません。ちなみにフォーム名を指定する際に編集するか否か聞いてくるのですが、編集を選んでも、上記Cのフィールドは自動的にリストボックスに設定されてしまい、選択して右クリックで「コントロール種類の変更」を選んでもオプションボタンを選ぶことが出来ません。最終的には乙フィールド名のラベルがあり、オプショングループで囲まれるようなイメージがあり、二つのオプションボタンのどちらかにチェック入れることが出来るものを目指します。

  • アクセスのフォームで抽出したデータに追加をしたい。

    アクセスのフォームで抽出したデータに追加をしたい。 はじめまして。アクセスの初心者ですが、どうぞお願いいたします。 添付のシートのようなアクセスのフォーム画面があります。これの前に、別のフォームで ORDER NO. 品番、数量、、、など、入力し終わっているので、その入力したデータがテーブルに入っています。 ここのフォームでは、ORDER NOを入力し、さきほど入力してテーブルに入っている品番数量などのデータを呼び出すようになっています。(私が作ったシステムではないのですが、抽出するためのクエリと結びついているようです) ここの画面において、たとえば、もう一つデータを加えたいとき、(この添付の画面で言えば、4番目のデータを付け加えたいとき)どうすればいいのでしょうか。 たとえば、品番、数量などだけ入力したところで、テーブルにデータは反映されません。 1,2,3番までのデータには、さきほど申しましたように、ORDER NO.も含めて前の画面で入力済み(テーブルに入っています)から、大丈夫ですが、それ以降のデータを付け加えるとなると、ここの画面でもひとつひとつORDER NOも入力しないと、テーブルに追加されなくなります。 添付したシートの右のほうに(ORDER NO)とあると思うのですが、1,2,3までのデータには、この欄にORDER NOが表示されます。だから、更新可能です。4番以降、追加したかったら、ここにひとつひとつORDER NOを入力しなければテーブルに反映されません。つまりお尋ねは、4番、5番のデータを入力したときに、この(ORDER NO)のところに自動的にORDER NOが入力され、そしてテーブルにデータが入るようになるにはどうしたらよいのでしょうか。 というのも、以前はそうなっていたのですが、私が一度ここのフォームをいじってしまったためこのような不具合が起こってしまったのです。しかし、私がさわった(一度消してしまった)のは、この(ORDER NO)のところだけですので、ここさえ直せば、今のトラブルは解消できるものと思います。 どなたか、説明が下手で申し訳ありませんが、助けてください。

  • フォームの作成ができません

    オフィス2007アクセスです。 テーブルを元にフォームを作成したいのですがうまくできません。 作成タブ→その他のフォーム→フォームウィザードで テーブル1を選択し、主キーを含むすべてのフィールドを選択し、 単票形式 スタイル:Office にして フォーム名:テーブル1(デフォルトのまま) フォームを開いてデータを入力する(デフォルトのまま) 完了(F)ボタンを を押すと、 画像のように「フォームを作成できませんでした」 となりました。 アクセス2003のときは、このようなやり方でできたと思うのですが。 テーブルのデータがおかしいのでしょうか?

  • Accessのフォームとテーブルについて教えてください。

    Access2003を使用しています。 既存のフォームAにフィールド3個を増やしました。 フォームAはテーブル(1)と連動していました。 追加したフィールドはテーブル(6)のものです。 ところがフォーム上で追加フィールドに入力が出来なくなりました。3フィールドのうち、ひとつはコンボボックスです。表示はされますが確定ができません。 フォームAのSQLステートメントではテーブル(1)・(6)以外にテーブル(2)・(3)・(4)・(5)が結合されています。 フォームAからするとテーブル(2)・(3)・(4)・(5)のデータはIDの名称を見るための参照用です。 テーブル(6)は、追加フィールドのコンボボックスが参照用で、他の2追加フィールドは、フォームから入力してテーブル(6)に反映させたいものです。 テーブル(6)の画面では入力できます。 フォーム上からは入力できません。 設定が何か欠けているからでしょうか? 他の質問では2つのテーブルをひとつのフォームにする場合は、クエリを別に設けた方がいいとなっています。フォームが出来上がっているので、できればクエリを設けずに行いたいのですが、よくない方法でしょうか? 手順なども踏まえて教えていただけると助かります。 よろしくお願いいたします。

  • ACCESSのフォームとテーブルの連携について

    ACCESSのフォームとテーブルの連携について 説明がややこしくて大変申し訳ないのですが、教えてください テーブルが1つあります。 そのテーブルを元にフォームが作成されています。 そおフォームの一つのフィールド((コンボボックス)→[テスト]フィールド名とします)でOK と NG と選択できるように値集合ソースを設定しています。 そしてここからが本題なのですが、 そのフォーム上では使用しない(見せたくない)フィールド([いろは]フィールド名とします。)がテーブルに1つあるのですが 例えばフォームの[テスト]に仮に OK と選択して保存したら、 テーブルの[いろは]に 快調 と自動反映させることは可能でしょうか?

  • アクセス2003 フォームが作成できない

    オブジェクト→フォーム→新規作成→オートフォーム:データシート→テーブルを選択で進んでいくと 画像のように「フォームを作成できませんでした」となります。 しかし画面の左下にフォームが出来ています。 そのフォームを×で閉じようとしたら 「フォーム1の変更を保存しますか?」と出るので「はい」を押すと、 「名前を付けて保存」が開き、フォーム名が先ほど選択したテーブル名になっています。 そのまま保存し、オブジェクト→フォームで該当のフォームを開くと、中身はからっぽです。 フィールドは何もないのに、レコード数だけは基のテーブルと同じ数だけ表示されています。 テーブル名はアルファベットのみです。 テーブルをダブルクリックする場合は、問題なく開けます。 ちなみに空のデータベースを作り、適当にテーブルを作り、 同じようにオートフォームでフォームを作ろうと思っても同じ現象が起きました。 ファイルが悪いと言うより、アクセスがおかしいような気がします。 環境は win7でアクセス2003と2007をいれています。 2007の使い方はよくわかりません。 ご回答よろしくお願いします。

専門家に質問してみよう