dポイントプレゼントキャンペーン実施中!

こんばんわ。

現在、リソースの管理方法を改善する目的でExcelからAccessに移行を検討しています。
そこでAccessのサブフォームを使って以下のような画面イメージで管理しようと考えています。

そこで2点、実現方法について皆様からお知恵を分けていただきたいです。
(1)サブフォーム上に全てのレコードが表示する方法。
  ※テーブルにはこれまで所属していた人を含めたデータを保存している
  ※所属や拠点でレコードの絞り込みをかける

(2)表示されたレコード内容を修正して、チェックしたレコードは一括登録のボタンなどで一度に複数
  同時に修正を行う方法。


どのような操作や設定を行うことで実現できますでしょうか。
クエリ集やExcelとAccessのスゴ技のような本を買ってもそのような方法は見当たりませんでした。

みなさまのお知恵をお貸し頂きたく存じます。
どうぞよろしくお願い致します。

「Accessでサブフォームを使った検索方」の質問画像

A 回答 (4件)

× 非連結フォームですから一括更新ボタンは必要ありません。


○ 通常の連結フォームですから一括更新ボタンは必要ありません。
    • good
    • 0

補足1:非連結フォームを意図していなければ・・・。



それは、単に、「条件付きでクエリーを表示するには?」という質問になります。
もちろん、非連結フォームですから一括更新ボタンは必要ありません。
「各行が変更されたら自動的にテーブルに反映される」ということを認めるだけです。

補足2:連結フォームを意図しているのならば・・・。

その場合は、指定条件で一時テーブルを作成して表示・更新。
チェック付きのみ更新をテーブルに反映。
こういうコードを書くことになります。

PS、「条件付きでクエリーを表示するには?」という質問に変えられて良いのでは・・・。
    • good
    • 0

(2)の要件を含めると質問文から予想される技術力では無理ではないかと思います。


VBAをいくらか使えればどうってことない内容なのですが。

VBAありの場合ですと以下のように私なら実装します。

1.サブフォームは使わない。フォームのヘッダー部分を条件入力に使い、詳細部分を表形式でデータ表示に使用する。

2.(2)の要件(選択したもののみ更新)があるため、フォームのレコードソース用に表示したいテーブルの項目+チェックボックス用の項目を持ったワークテーブルを用意する。これをフォームのレコードソースに使用する。

3.フォームのオープン時のイベントで、ワークテーブルのデータ消去、元のテーブルからワークテーブルに全データをコピー(削除クエリ+挿入クエリで簡単にできます)

4.絞り込み用のボタンを用意し、それが押された際にフォームにフィルタをかける。
 (イメージを見ると複数条件があるようですので、条件式の組み立て処理は必要でしょうね)

5.データの更新用ボタンを用意し、それが押された際に、チェックがついたものだけ更新する更新クエリを実行する。

ちゃっちゃと作るなら上のように実装します。(私なら1時間かかるかどうかです)
なお、更新以外に行の追加、削除がある場合にはもう少し面倒なことになります。

VBAではなくマクロ(今もありますよね?)+クエリの使用でも上記の1,2,3,5は可能かな?
4の絞り込みに関して複合条件での絞り込みの実現イメージがわかないのですが。絞り込みが1条件のみならマクロまでの知識で実現はできるかもしれません。(私はVBAにたよるのでマクロはほぼ使わないので断言できませんが

VBA、マクロを使わない場合には、(2)の要件の「選択したもののみの一括更新」はあきらめるべきでしょう。


また、テーブル設計もデータ構造としては不適切と思われる部分がありますので指摘しておきます。
(わかっていてこの構造を選んでいるのかもしれませんが)

項目のうち「社員番号、社員名、入社日、退社日」は通常は各社員について1つしかないデータと考えられます。(結婚等での氏名変更は無視しますが)
これに対し一人の社員は複数のプロジェクトに通常参加しますので「勤務地、所属グループ、所属チーム、職位、プロジェクト番号、参画プロジェクト」は同一の社員に複数存在するデータです。
データ構造としては社員の基本情報「社員番号、社員名、入社日、退社日」とプロジェクト参加情報「社員番号、勤務地、所属グループ、所属チーム、職位、プロジェクト番号、参画プロジェクト」の2つに分けるのが一般的です。
(細かいことを言うとプロジェクト情報として「プロジェクト番号、参画プロジェクト」も分割したりしますが)
    • good
    • 0

Q、みなさまのお知恵をお貸し頂きたく存じます。


A、テーブル設計の概要を説明されたし!

1、サブフォーム???

メインは単なる検索条件を入力するフォームということ。
それはそれで良いかも?
でも、なぜ、そういう風になるのかな?
普通は、考えられないこと。

2、メインを基にサブフォームを更新したい??

レコードを移動すれば自動更新される。
このAccessの機能を殺したい。
となれば、非連結サブフォーム?
でも、それは滅茶苦茶に面倒くさいのでは?
なぜなら、Accessの機能を全て自分の書いたコードで実現する試みだから・・・。

疑問1、メインとサブとをどのように認識されているのか?
疑問2、そもそもテーブル設計が全てだと思うのだが・・・。
    なぜゆえに、サブフォームの質問が先行しているのか?
疑問3、非連結フォームなんてオフコン出身者の発想。
    なぜに、そのような面倒臭いことをやろうというのか?

色々と疑問はありますが、テーブル設計の簡単なスケッチを提示。
それが先決だと思いますよ。

※私は、全くの素人。見当違いはお許し願いたい!

この回答への補足

早速のコメントありがとうございます。

疑問に挙げられていた内容にお答えしますと、
(1)メインとサブとをどのように認識されているのか?
 →メインフォームでは絞り込みの項目があり、
  サブフォームに絞り込みで該当するレコードが表示されます

(2)なぜゆえに、サブフォームの質問が先行しているのか?
 →検索を行う場合はメインで検索項目を決め、サブフォームにその結果を
  表示するという使い方をするとクエリ集に書いてあった為です

(3)非連結フォームなんてオフコン出身者の発想。
 →これは完全に私自身がAccessの素人である点が大きいです。
  もちろんサブフォームを使わないで、投稿させていただいた挙動が
  実現できれば、問題はありません。


以上と併せて、テーブル設計の簡単な構成を書きますと、以下のようなイメージです。


|社員番号|社員名|勤務地|所属グループ|所属チーム|職位|プロジェクト番号|参画プロジェクト|入社日|退社日|


これらのテーブルをグループやチーム、プロジェクトなどで絞り込みをかけて、
表示されたレコードのうち、変更させたい情報を修正して、修正ボタンを押すと
一括でテーブルに修正が反映されるという挙動を考えています。

補足日時:2011/10/03 19:59
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!