• ベストアンサー

【Access2002】サブフォームのレコードを自動的に1行表示させたい

お世話になります。 契約社員の契約更新を管理するDBを作っています。 社員マスター(社員NO,氏名、部署...主キーは社員NO)と をメインフォームに 契約マスター(社員NO、回数、更新済・・・主キーは社員NOと回数) をサブフォームにして フォームを作成中です。 例として 社員NO 010 氏名 田中太郎 営業部←メイン 回数 1回目、更新済YES/NO(チェックボックス)←サブ というレコードを持つとします。 契約社員は半年後に2回目の更新をするのですが、 その際、「回数は入っているが(2回目)更新済がNOのもの」という 選択クエリで次に更新する契約社員を抽出したいとおもいます、 今は、この2回目というのを手入力していますが(コンボボックス) 1回目の更新済がYESになれば、自動的に 回数の2回目を入力できた状態であれば非常に楽になります。 関数か簡易なVBAで何かいい方法があれば教えてください。 ちなみに回数は6回目が上限で、常に次の1回分だけ回数が自動的に入ってほしいです。(1,2回目が更新されているのなら3回目が入っている状態) よろしくお願いします

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

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

レコードを追加するのですから追加クエリを作ることになります INSERT INTO 契約マスター ( 社員NO, 回数, 更新済 ) SELECT 社員マスター.社員NO, nz(DCount("*","契約マスター","社員NO=" & [社員NO]),0)+1 AS 回数, Null AS 更新済 FROM 社員マスター; このクエリはデザインビューで作れますが デザインビューでの作り方を書くのは面倒なので 上のSQLをSQLビューに貼り付け、デザインビューで表示してください 別件 マスターというのは半固定的な基礎データを集めたテーブルに対してつける名前です 契約の状況を記録するテーブルにつけるのはまずいですね

paopao1234
質問者

お礼

あrがとうございました。 この通りにやりましたら、できました。 今回nzという関数をはじめてみたので、調べました。 別件の回答もありがとうございます。まだまだ 知らないことばかりですね。

その他の回答 (1)

  • Dxak
  • ベストアンサー率34% (510/1465)
回答No.2

質問に対しての答えではないのですが・・・ > 更新済YES/NO これは、YES/NOでは無く、日付時刻型の方が宜しいのではないでしょうか? いつ契約し、いつ更新したのか、上記データからでは読み取る事が不可能で 次回更新時って、引っ張るにも容易では無いような気がします その辺は、お考え済みであれば問題ないのですが・・・ テーブルのイメージをしっかりしてから、クエリー、フォームと作りこんでいかないと、テーブルを変更した途端、クエリー、フォームの作り直しと言う2度手間を食らいますけど・・・

paopao1234
質問者

お礼

ありがとうございました。 確かに、そうだと、回答をいただいて 気付きましたので テーブルを変更しました。まだ データが少ない段階だったのでよかったです。

関連するQ&A