• ベストアンサー

Access97のフォームで一人につき一画面でデータ表示させる方法を教えて下さい。

仕事で、マイクロソフトアクセス97を使ってフォームを作成しようとしています。 アクセスでクエリやテーブルは以前から使っていますが、フォームを作るのは初めてで、非常に初歩的な質問で申し訳ありませんが教えてください。 フォームのデータのもとは一つのテーブルで、氏名・社員番号・給与年月・支給給与項目ごとの金額 といった項目で構成されており、過去1年の分データを持っています。(つまりテーブルには、一人につき12行のデータがあります。そのため、社員番号だけではデータは特定できず、社員番号と給与年月で特定できます。主キーは設定していません。) フォームでは、これらを見やすく配置し、社員番号ごとに(=一社員ごとに)1ページ、過去1年間に支給された給与年月ごとのデータを表示させたいと考えています。 <希望するイメージ> 氏名:○○太郎 社員番号:11111 給与年月 基本給   ○○手当  ××手当 200701   200,000    20,000   10,000 200702    200,000    20,000   15,000   ------以下省略(12ヶ月分が同様に並ぶ)------ フォームウィザードで作成してみたところ、表形式だと1人1ページにならず他の対象者のデータも一画面に一緒に表示されてしまい、また単票形式だと1人につき1か月分のデータしか表示されず1人につき12ページとなってしまいました。 一体どこをどういじれば、1人につき1ページの表示に変えられるでしょうか? 宜しくお願いします。

質問者が選んだベストアンサー

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

テーブル設計がまずいですね 月ごとの給与をテーブルにしたいのなら 今のテーブルを [社員テーブル](社員番号、氏名、入社年月日、生年月日、性別、・・・) [給与](社員番号、支給年月、支給項目ごとの金額) のように分けましょう こうしておいて 社員テーブルから作った単票フォームに 給与テーブルを社員番号でリンクしてサブフォームとしてはめ込みます

tamaboston
質問者

お礼

なるほど、テーブル設計と作り方の問題なのですね。非常に単純に物事を考えていたみたいで、サブフォームを使って、というのは全く考えていませんでした。そのやり方、これからちょっと勉強してみます。 有難いことに社員番号や氏名など他基本的な情報を載せたテーブルは既に別にあるので、それを使って単票形式でメインフォームをつくり、今回ご相談した給与テーブルをサブフォームではめ込んでみますね。(今は週末で家にいるので、来週月曜日会社で。) お答えくださって、どうもありがとうございます!

tamaboston
質問者

補足

教えて頂いたように作ってみたのですが、メインフォームを開いてもサブフォーム側のデータが表示されませんでした。(サブフォームの中の四角い枠などはできているのですが、そこに数字が入っておらず白いまま。) とはいえ、サブフォーム単体で開くと、社員番号順にそれぞれの年月ごとの給与データがちゃんとずらっと並ぶのです。。。 メインフォームの元になっている基本情報テーブルと、サブフォームの元になっている給与テーブルとは、社員番号でリレーションをかけてあり、一(基本情報テーブル)対多(給与テーブル)の関係になっています。「参照整合性」というチェックボックスには、チェックを入れませんでした。 また、基本情報テーブルの社員番号は主キーになっており、どちらのテーブルにおいても社員番号はテキストデータです。(以上関係ないのかもしれませんが、ご参考まで。。。) あと何が足りないorいけないか、お分かりになりましたらどうか教えてください。

その他の回答 (2)

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

メインとサブは社員番号でリンクさせていますか?

tamaboston
質問者

お礼

今一度やり直してみましたら、できました! 何度もお教えいただいて、申し訳ありませんでした。 ありがとうございました。

tamaboston
質問者

補足

どうもありがとうございます。 リンクと呼ぶのか分かりませんが、メインとサブのもとになっている2つのテーブルについて、社員番号でリレーションシップを設定しています。(リレーションシップの種類は、「一対多」と出ていました。)

  • gatyan
  • ベストアンサー率41% (160/385)
回答No.1

家のPCにACCESS入ってないし、文章だけで書くのは ちと難しいんですが 自分だったら、サブフォーム使って作る メインのフォームで社員番号と年を入れてサブフォームとリンクさせるか、VBAでフィルタセットするかな 何かウィザードがあった気がするけど・・・

tamaboston
質問者

お礼

ご回答ありがとうございます。 サブフォームを使うのですね、私も今は家にいて家のPCにはACCESSが入っていないので試せないのですが、月曜日にトライしてみます!

関連するQ&A